From 839d55063958affa3dc027f1d8f504d11b3b32c9 Mon Sep 17 00:00:00 2001 From: ArunSiva Date: Thu, 5 Oct 2023 23:30:51 +0530 Subject: [PATCH 1/5] equilibrium index in an array --- .../arrays/equilibrium_index_in_array.py | 55 +++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 data_structures/arrays/equilibrium_index_in_array.py diff --git a/data_structures/arrays/equilibrium_index_in_array.py b/data_structures/arrays/equilibrium_index_in_array.py new file mode 100644 index 000000000000..1d66fe8bf10c --- /dev/null +++ b/data_structures/arrays/equilibrium_index_in_array.py @@ -0,0 +1,55 @@ +""" +Find the Equilibrium Index of an Array. +Reference: https://www.geeksforgeeks.org/equilibrium-index-of-an-array/ + +Python doctests can be run with the following command: +python -m doctest -v equilibrium_index.py + +Given a sequence arr[] of size n, this function returns an equilibrium index (if any) or -1 if no equilibrium index exists. + +The equilibrium index of an array is an index such that the sum of elements at lower indexes is equal to the sum of elements at higher indexes. + + + +Example Input: +arr = [-7, 1, 5, 2, -4, 3, 0] +Output: 3 + +""" + +def equilibrium_index(arr: list[int], n: int) -> int: + """ + Find the equilibrium index of an array. + + Args: + arr (List[int]): The input array of integers. + n (int): The size of the array. + + Returns: + int: The equilibrium index or -1 if no equilibrium index exists. + + Examples: + >>> equilibrium_index([-7, 1, 5, 2, -4, 3, 0], 7) + 3 + >>> equilibrium_index([1, 2, 3, 4, 5], 5) + -1 + >>> equilibrium_index([1, 1, 1, 1, 1], 5) + 2 + >>> equilibrium_index([2, 4, 6, 8, 10, 3], 6) + -1 + """ + total_sum = sum(arr) + left_sum = 0 + + for i in range(n): + total_sum -= arr[i] + if left_sum == total_sum: + return i + left_sum += arr[i] + + return -1 + +if __name__ == "__main__": + import doctest + + doctest.testmod() \ No newline at end of file From d161bd9161487069bcb3ff3b7b1770047df21c87 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 5 Oct 2023 18:04:13 +0000 Subject: [PATCH 2/5] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/arrays/equilibrium_index_in_array.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/data_structures/arrays/equilibrium_index_in_array.py b/data_structures/arrays/equilibrium_index_in_array.py index 1d66fe8bf10c..db09cfbea07b 100644 --- a/data_structures/arrays/equilibrium_index_in_array.py +++ b/data_structures/arrays/equilibrium_index_in_array.py @@ -17,6 +17,7 @@ """ + def equilibrium_index(arr: list[int], n: int) -> int: """ Find the equilibrium index of an array. @@ -40,16 +41,17 @@ def equilibrium_index(arr: list[int], n: int) -> int: """ total_sum = sum(arr) left_sum = 0 - + for i in range(n): total_sum -= arr[i] if left_sum == total_sum: return i left_sum += arr[i] - + return -1 + if __name__ == "__main__": import doctest - doctest.testmod() \ No newline at end of file + doctest.testmod() From 7e5791568983003ff8a0d85224c938164cfed5d6 Mon Sep 17 00:00:00 2001 From: ArunSiva Date: Thu, 5 Oct 2023 23:34:55 +0530 Subject: [PATCH 3/5] equilibrium index in an array --- data_structures/arrays/equilibrium_index_in_array.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/data_structures/arrays/equilibrium_index_in_array.py b/data_structures/arrays/equilibrium_index_in_array.py index 1d66fe8bf10c..b8d31c6fa055 100644 --- a/data_structures/arrays/equilibrium_index_in_array.py +++ b/data_structures/arrays/equilibrium_index_in_array.py @@ -5,9 +5,11 @@ Python doctests can be run with the following command: python -m doctest -v equilibrium_index.py -Given a sequence arr[] of size n, this function returns an equilibrium index (if any) or -1 if no equilibrium index exists. +Given a sequence arr[] of size n, this function returns +an equilibrium index (if any) or -1 if no equilibrium index exists. -The equilibrium index of an array is an index such that the sum of elements at lower indexes is equal to the sum of elements at higher indexes. +The equilibrium index of an array is an index such that the sum of +elements at lower indexes is equal to the sum of elements at higher indexes. From 9fc646778d386a4264a2a2e6fb1689e9f83e7aa6 Mon Sep 17 00:00:00 2001 From: ArunSiva Date: Thu, 5 Oct 2023 23:40:09 +0530 Subject: [PATCH 4/5] equilibrium index in an array --- data_structures/arrays/equilibrium_index_in_array.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/arrays/equilibrium_index_in_array.py b/data_structures/arrays/equilibrium_index_in_array.py index 7ecd54c91cfc..9e0f6a99eb3e 100644 --- a/data_structures/arrays/equilibrium_index_in_array.py +++ b/data_structures/arrays/equilibrium_index_in_array.py @@ -20,7 +20,7 @@ """ -def equilibrium_index(arr: list[int], n: int) -> int: +def equilibrium_index(arr: list[int], size: int) -> int: """ Find the equilibrium index of an array. @@ -44,7 +44,7 @@ def equilibrium_index(arr: list[int], n: int) -> int: total_sum = sum(arr) left_sum = 0 - for i in range(n): + for i in range(size): total_sum -= arr[i] if left_sum == total_sum: return i From fadbd5be018ef0d30edeeeb3bc71d893afb82240 Mon Sep 17 00:00:00 2001 From: ArunSiva Date: Fri, 6 Oct 2023 07:30:40 +0530 Subject: [PATCH 5/5] equilibrium index in an array removed type in docstring --- data_structures/arrays/equilibrium_index_in_array.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/data_structures/arrays/equilibrium_index_in_array.py b/data_structures/arrays/equilibrium_index_in_array.py index 9e0f6a99eb3e..4099896d226d 100644 --- a/data_structures/arrays/equilibrium_index_in_array.py +++ b/data_structures/arrays/equilibrium_index_in_array.py @@ -25,8 +25,8 @@ def equilibrium_index(arr: list[int], size: int) -> int: Find the equilibrium index of an array. Args: - arr (List[int]): The input array of integers. - n (int): The size of the array. + arr : The input array of integers. + size : The size of the array. Returns: int: The equilibrium index or -1 if no equilibrium index exists.