Skip to content

Instantly share code, notes, and snippets.

@ediskandarov
Created July 20, 2021 07:06
Show Gist options
  • Save ediskandarov/048cc98afb97f4b4643b7670aa56c7e0 to your computer and use it in GitHub Desktop.
Save ediskandarov/048cc98afb97f4b4643b7670aa56c7e0 to your computer and use it in GitHub Desktop.
# Given an unsorted array, leftSum is defined as sum of all elements to the left of an element including the element
# and rightSum is defined as sum of all elements to the right of an element.
#
# Write a function that returns the minimum absolute difference between leftSum and rightSum.
#
# Example:
#
# Input: arr = [3,1,2,4,3]
# Output: 1
# Explanation:
# For index 0, leftSum = 3, rightSum = 10. Absolute difference = 7.
# For index 1, leftSum = 4, rightSum = 9. Absolute difference = 5.
# For index 2, leftSum = 6, rightSum = 7. Absolute difference = 1.
# For index 3, leftSum = 10, rightSum = 3. Absolute difference = 7.
# Minimum absolute difference = 1.
#
# ---------------------------------------------------------------------------------------------------------------------------------------------
def min_abs_diff(in_array):
left_sum = 0
right_sum = sum(in_array)
min_abs_diff = max(in_array)
for i, val in enumerate(in_array):
left_sum += val
right_sum -= val
if left_sum > right_sum:
diff = left_sum - right_sum
else:
diff = right_sum - left_sum
if diff < min_abs_diff:
min_abs_diff = diff
print(f"For index {i}, leftSum = {left_sum}, rightSum = {right_sum}. Absolute difference = {diff}.")
print(f"Minimum absolute difference = {min_abs_diff}.")
input_array = [3,1,2,4,3]
min_abs_diff(input_array)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment