Created
July 20, 2021 07:06
-
-
Save ediskandarov/048cc98afb97f4b4643b7670aa56c7e0 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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