From e8a7e4f35a454e39911c759b131d6082aad01bdf Mon Sep 17 00:00:00 2001 From: jenyyy4 Date: Wed, 8 Oct 2025 22:14:27 +0530 Subject: [PATCH 01/10] added max and min algo --- data_structures/arrays/max_and_min.py | 45 +++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 data_structures/arrays/max_and_min.py diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py new file mode 100644 index 000000000000..2b5b5782da1b --- /dev/null +++ b/data_structures/arrays/max_and_min.py @@ -0,0 +1,45 @@ +""" +Find the maximum and minimum elements in a list. +Source: https://en.wikipedia.org/wiki/Maximum_and_minimum + +>>> find_max_min([4, 2, 9, 1, 7]) +(9, 1) +>>> find_max_min([-5, -10, 0, 5]) +(5, -10) +>>> find_max_min([42]) +(42, 42) +>>> find_max_min([]) +""" + +def find_max_min(arr): + """ + Returns the maximum and minimum elements of a list. + + Parameters: + arr (list): The list of numbers. + + Returns: + tuple: (maximum, minimum) + + Raises: + ValueError: If the list is empty. + """ + + if not arr: + raise ValueError("find_max_min() arg is an empty list") + + maximum = max(arr) + minimum = min(arr) + return maximum, minimum + + +if __name__ == "__main__": + examples = [ + [4, 2, 9, 1, 7], + [-5, -10, 0, 5], + [42], + ] + + for arr in examples: + max_val, min_val = find_max_min(arr) + print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") \ No newline at end of file From 18392e5672bb0ad8b13141c32a837a70abfae9bb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 8 Oct 2025 16:46:42 +0000 Subject: [PATCH 02/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/arrays/max_and_min.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py index 2b5b5782da1b..bf6109bb67e5 100644 --- a/data_structures/arrays/max_and_min.py +++ b/data_structures/arrays/max_and_min.py @@ -11,6 +11,7 @@ >>> find_max_min([]) """ + def find_max_min(arr): """ Returns the maximum and minimum elements of a list. @@ -27,7 +28,7 @@ def find_max_min(arr): if not arr: raise ValueError("find_max_min() arg is an empty list") - + maximum = max(arr) minimum = min(arr) return maximum, minimum @@ -42,4 +43,4 @@ def find_max_min(arr): for arr in examples: max_val, min_val = find_max_min(arr) - print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") \ No newline at end of file + print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") From d111a9d1f7a605eb85017f3c58fced64b8f366c4 Mon Sep 17 00:00:00 2001 From: jenyyy4 Date: Wed, 8 Oct 2025 22:51:03 +0530 Subject: [PATCH 03/10] added return type --- data_structures/arrays/max_and_min.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py index 2b5b5782da1b..314740d85da1 100644 --- a/data_structures/arrays/max_and_min.py +++ b/data_structures/arrays/max_and_min.py @@ -11,7 +11,7 @@ >>> find_max_min([]) """ -def find_max_min(arr): +def find_max_min(arr: list[int]) -> tuple[int, int]: """ Returns the maximum and minimum elements of a list. From af0f397471b1766970e4ef10ce1d176a61592fcf Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 8 Oct 2025 17:22:18 +0000 Subject: [PATCH 04/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/arrays/max_and_min.py | 1 + 1 file changed, 1 insertion(+) diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py index aeac4e918e55..54bcaf2bf853 100644 --- a/data_structures/arrays/max_and_min.py +++ b/data_structures/arrays/max_and_min.py @@ -11,6 +11,7 @@ >>> find_max_min([]) """ + def find_max_min(arr: list[int]) -> tuple[int, int]: """ Returns the maximum and minimum elements of a list. From 33a2fb07148a283a8be6342d2ff1783df5e24ddf Mon Sep 17 00:00:00 2001 From: jenyyy4 Date: Thu, 9 Oct 2025 00:28:18 +0530 Subject: [PATCH 05/10] fixed list --- data_structures/arrays/max_and_min.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py index aeac4e918e55..8650f0c41c12 100644 --- a/data_structures/arrays/max_and_min.py +++ b/data_structures/arrays/max_and_min.py @@ -16,18 +16,16 @@ def find_max_min(arr: list[int]) -> tuple[int, int]: Returns the maximum and minimum elements of a list. Parameters: - arr (list): The list of numbers. + arr (list[int]): The list of numbers. Returns: - tuple: (maximum, minimum) + Tuple[int, int]: (maximum, minimum) Raises: ValueError: If the list is empty. """ - if not arr: raise ValueError("find_max_min() arg is an empty list") - maximum = max(arr) minimum = min(arr) return maximum, minimum @@ -42,4 +40,4 @@ def find_max_min(arr: list[int]) -> tuple[int, int]: for arr in examples: max_val, min_val = find_max_min(arr) - print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") + print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") \ No newline at end of file From 60942d12dc87f39695e4efa509d96fa6db9653ba Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 8 Oct 2025 18:58:41 +0000 Subject: [PATCH 06/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/arrays/max_and_min.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py index dda425640606..cc79db03eb3d 100644 --- a/data_structures/arrays/max_and_min.py +++ b/data_structures/arrays/max_and_min.py @@ -41,4 +41,4 @@ def find_max_min(arr: list[int]) -> tuple[int, int]: for arr in examples: max_val, min_val = find_max_min(arr) - print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") \ No newline at end of file + print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") From ea1a96eb8af227a72b4e68da8fc945aaed1c6bea Mon Sep 17 00:00:00 2001 From: jenyyy4 Date: Thu, 9 Oct 2025 01:10:59 +0530 Subject: [PATCH 07/10] changed valueerror to none --- data_structures/arrays/max_and_min.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py index dda425640606..fcf5f3cfb91c 100644 --- a/data_structures/arrays/max_and_min.py +++ b/data_structures/arrays/max_and_min.py @@ -12,7 +12,7 @@ """ -def find_max_min(arr: list[int]) -> tuple[int, int]: +def find_max_min(arr: list[int]) -> tuple[int | None, int | None]: """ Returns the maximum and minimum elements of a list. @@ -20,10 +20,7 @@ def find_max_min(arr: list[int]) -> tuple[int, int]: arr (list[int]): The list of numbers. Returns: - Tuple[int, int]: (maximum, minimum) - - Raises: - ValueError: If the list is empty. + tuple[int | None, int | None]: (maximum, minimum), or (None, None) if the list is empty. """ if not arr: raise ValueError("find_max_min() arg is an empty list") From 26d0845cf1060264a9bdbbf9f693ed9eefeb721d Mon Sep 17 00:00:00 2001 From: jenyyy4 Date: Thu, 9 Oct 2025 01:13:00 +0530 Subject: [PATCH 08/10] fixed long line error --- data_structures/arrays/max_and_min.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py index f863ab25ee04..9c7b1d6a1bc8 100644 --- a/data_structures/arrays/max_and_min.py +++ b/data_structures/arrays/max_and_min.py @@ -20,7 +20,8 @@ def find_max_min(arr: list[int]) -> tuple[int | None, int | None]: arr (list[int]): The list of numbers. Returns: - tuple[int | None, int | None]: (maximum, minimum), or (None, None) if the list is empty. + tuple[int | None, int | None]: A tuple of (maximum, minimum), + or (None, None) if the list is empty. """ if not arr: raise ValueError("find_max_min() arg is an empty list") From f9cb7a4813780689d39bf1038cd815936746d4e3 Mon Sep 17 00:00:00 2001 From: jenyyy4 Date: Thu, 9 Oct 2025 10:24:09 +0530 Subject: [PATCH 09/10] trying to fix --- data_structures/arrays/max_and_min.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py index 9c7b1d6a1bc8..b6070763d40a 100644 --- a/data_structures/arrays/max_and_min.py +++ b/data_structures/arrays/max_and_min.py @@ -9,10 +9,13 @@ >>> find_max_min([42]) (42, 42) >>> find_max_min([]) +Traceback (most recent call last): + ... +ValueError: find_max_min() arg is an empty list """ -def find_max_min(arr: list[int]) -> tuple[int | None, int | None]: +def find_max_min(arr: list[int]) -> tuple[int, int]: """ Returns the maximum and minimum elements of a list. @@ -20,11 +23,14 @@ def find_max_min(arr: list[int]) -> tuple[int | None, int | None]: arr (list[int]): The list of numbers. Returns: - tuple[int | None, int | None]: A tuple of (maximum, minimum), - or (None, None) if the list is empty. + tuple[int, int]: A tuple of (maximum, minimum). + + Raises: + ValueError: If the list is empty. """ if not arr: raise ValueError("find_max_min() arg is an empty list") + maximum = max(arr) minimum = min(arr) return maximum, minimum @@ -39,4 +45,4 @@ def find_max_min(arr: list[int]) -> tuple[int | None, int | None]: for arr in examples: max_val, min_val = find_max_min(arr) - print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") + print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") \ No newline at end of file From a685ba5e32f3735d77e642e027e412f3009cf117 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 9 Oct 2025 04:54:48 +0000 Subject: [PATCH 10/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- data_structures/arrays/max_and_min.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data_structures/arrays/max_and_min.py b/data_structures/arrays/max_and_min.py index b6070763d40a..1a8e071b7d2f 100644 --- a/data_structures/arrays/max_and_min.py +++ b/data_structures/arrays/max_and_min.py @@ -45,4 +45,4 @@ def find_max_min(arr: list[int]) -> tuple[int, int]: for arr in examples: max_val, min_val = find_max_min(arr) - print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}") \ No newline at end of file + print(f"For list {arr}, maximum: {max_val}, minimum: {min_val}")