From 6209eb75478101ac7237d1552be327508f20a995 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Wed, 29 Mar 2023 10:58:32 +0530 Subject: [PATCH 01/23] added kadane's algorithm directory with one problem's solution. --- kadane_algorithm/max_product_subarray.py | 33 ++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 kadane_algorithm/max_product_subarray.py diff --git a/kadane_algorithm/max_product_subarray.py b/kadane_algorithm/max_product_subarray.py new file mode 100644 index 000000000000..10204d4cde78 --- /dev/null +++ b/kadane_algorithm/max_product_subarray.py @@ -0,0 +1,33 @@ +def max_product_subarray(nums): + """ + Returns the maximum product that can be obtained by multiplying a + contiguous subarray of the given integer list `nums`. + + Example: + >>> max_product_subarray([2, 3, -2, 4]) + 6 + >>> max_product_subarray([-2, 0, -1]) + 0 + >>> max_product_subarray([2, 3, -2, 4, -1]) + 48 + """ + n = len(nums) + + if n == 0: + return 0 + + max_till_now = nums[0] + min_till_now = nums[0] + max_prod = nums[0] + + for i in range(1, n): + # update the maximum and minimum subarray products + if nums[i] < 0: + max_till_now, min_till_now = min_till_now, max_till_now + max_till_now = max(nums[i], max_till_now * nums[i]) + min_till_now = min(nums[i], min_till_now * nums[i]) + + # update the maximum product found till now + max_prod = max(max_prod, max_till_now) + + return max_prod From 767b1d08f4476ad68e4397d7dec167982ad9cf64 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Wed, 29 Mar 2023 11:08:20 +0530 Subject: [PATCH 02/23] added type hints --- kadane_algorithm/max_product_subarray.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kadane_algorithm/max_product_subarray.py b/kadane_algorithm/max_product_subarray.py index 10204d4cde78..90e121938a59 100644 --- a/kadane_algorithm/max_product_subarray.py +++ b/kadane_algorithm/max_product_subarray.py @@ -1,4 +1,4 @@ -def max_product_subarray(nums): +def max_product_subarray(nums: list[int]) -> int: """ Returns the maximum product that can be obtained by multiplying a contiguous subarray of the given integer list `nums`. From a5ea4b2aa43bcbdf7d410d3c39b579dc653e054a Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 09:01:22 +0530 Subject: [PATCH 03/23] Rename kaadne_algorithm/max_product_subarray.py to dynamic_programming/max_product_subarray.py --- {kadane_algorithm => dynamic_programming}/max_product_subarray.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename {kadane_algorithm => dynamic_programming}/max_product_subarray.py (100%) diff --git a/kadane_algorithm/max_product_subarray.py b/dynamic_programming/max_product_subarray.py similarity index 100% rename from kadane_algorithm/max_product_subarray.py rename to dynamic_programming/max_product_subarray.py From 28b440689c72895d5fd5807946155f4e273f86d3 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:44:31 +0530 Subject: [PATCH 04/23] Update dynamic_programming/max_product_subarray.py Co-authored-by: Christian Clauss --- dynamic_programming/max_product_subarray.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 90e121938a59..5ff701ad79ab 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -1,4 +1,4 @@ -def max_product_subarray(nums: list[int]) -> int: +def max_product_subarray(numbers: list[int]) -> int: """ Returns the maximum product that can be obtained by multiplying a contiguous subarray of the given integer list `nums`. From 71ceff43bc5903606d197b0d71b1fbd46d821cfa Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:48:24 +0530 Subject: [PATCH 05/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 32 ++++++++++++++++----- 1 file changed, 25 insertions(+), 7 deletions(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 5ff701ad79ab..68b6551dcc7e 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -10,22 +10,40 @@ def max_product_subarray(numbers: list[int]) -> int: 0 >>> max_product_subarray([2, 3, -2, 4, -1]) 48 + >>> max_product_subarray([2, 3, -2, 4.5, -1]) + 54 + >>> max_product_subarray([-1]) + -1 + >>> max_product_subarray([]) + 0 + >>> max_product_subarray("ABC") + None + >>> max_product_subarray("") + 0 + >>> max_product_subarray(None) + None """ - n = len(nums) + if numbers is None or not isinstance(numbers, list): + return None + + n = len(numbers) if n == 0: return 0 - max_till_now = nums[0] - min_till_now = nums[0] - max_prod = nums[0] + if not all(isinstance(x, int) for x in numbers): + return None + + max_till_now = numbers[0] + min_till_now = numbers[0] + max_prod = numbers[0] for i in range(1, n): # update the maximum and minimum subarray products - if nums[i] < 0: + if numbers[i] < 0: max_till_now, min_till_now = min_till_now, max_till_now - max_till_now = max(nums[i], max_till_now * nums[i]) - min_till_now = min(nums[i], min_till_now * nums[i]) + max_till_now = max(numbers[i], max_till_now * numbers[i]) + min_till_now = min(numbers[i], min_till_now * numbers[i]) # update the maximum product found till now max_prod = max(max_prod, max_till_now) From 0a6d492702b8a2a098dface78dd5745520b29000 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:51:20 +0530 Subject: [PATCH 06/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 68b6551dcc7e..03ade8563fda 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -17,14 +17,14 @@ def max_product_subarray(numbers: list[int]) -> int: >>> max_product_subarray([]) 0 >>> max_product_subarray("ABC") - None + 0 >>> max_product_subarray("") 0 >>> max_product_subarray(None) - None + 0 """ if numbers is None or not isinstance(numbers, list): - return None + return 0 n = len(numbers) @@ -32,7 +32,7 @@ def max_product_subarray(numbers: list[int]) -> int: return 0 if not all(isinstance(x, int) for x in numbers): - return None + return 0 max_till_now = numbers[0] min_till_now = numbers[0] From 0d4a9aa5b034663e37196cfc2c680ec5a2ef02d0 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:56:54 +0530 Subject: [PATCH 07/23] Update dynamic_programming/max_product_subarray.py Co-authored-by: Christian Clauss --- dynamic_programming/max_product_subarray.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 03ade8563fda..35445144bf49 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -38,7 +38,7 @@ def max_product_subarray(numbers: list[int]) -> int: min_till_now = numbers[0] max_prod = numbers[0] - for i in range(1, n): + for i in range(1, len(numbers)): # update the maximum and minimum subarray products if numbers[i] < 0: max_till_now, min_till_now = min_till_now, max_till_now From b841831524f713934e832fe1aade3ad4ea2e6164 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:59:11 +0530 Subject: [PATCH 08/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 35445144bf49..422ef8ef6881 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -34,16 +34,15 @@ def max_product_subarray(numbers: list[int]) -> int: if not all(isinstance(x, int) for x in numbers): return 0 - max_till_now = numbers[0] - min_till_now = numbers[0] - max_prod = numbers[0] + max_till_now = min_till_now = max_prod = numbers[0] for i in range(1, len(numbers)): # update the maximum and minimum subarray products - if numbers[i] < 0: + number = numbers[i] + if number < 0: max_till_now, min_till_now = min_till_now, max_till_now - max_till_now = max(numbers[i], max_till_now * numbers[i]) - min_till_now = min(numbers[i], min_till_now * numbers[i]) + max_till_now = max(number, max_till_now * number]) + min_till_now = min(number, min_till_now * number) # update the maximum product found till now max_prod = max(max_prod, max_till_now) From 88aeebaa3aa641c21e5b330510ec389e7f603e4c Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:00:33 +0530 Subject: [PATCH 09/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 422ef8ef6881..803952660ac2 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -34,7 +34,7 @@ def max_product_subarray(numbers: list[int]) -> int: if not all(isinstance(x, int) for x in numbers): return 0 - max_till_now = min_till_now = max_prod = numbers[0] + max_till_now = min_till_now = max_prod = numbers[0] for i in range(1, len(numbers)): # update the maximum and minimum subarray products From caea20754a710f1c19d8c337471286971bc4506a Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:02:01 +0530 Subject: [PATCH 10/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 803952660ac2..93dfd2b4e2d8 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -41,7 +41,7 @@ def max_product_subarray(numbers: list[int]) -> int: number = numbers[i] if number < 0: max_till_now, min_till_now = min_till_now, max_till_now - max_till_now = max(number, max_till_now * number]) + max_till_now = max(number, max_till_now * number) min_till_now = min(number, min_till_now * number) # update the maximum product found till now From 4f6302521ed0389fe42f873ddb46e381a654c235 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:18:09 +0530 Subject: [PATCH 11/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 93dfd2b4e2d8..09ed646e7be7 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -31,8 +31,8 @@ def max_product_subarray(numbers: list[int]) -> int: if n == 0: return 0 - if not all(isinstance(x, int) for x in numbers): - return 0 + if not all(isinstance(x, (int, float)) for x in numbers): + return 0 max_till_now = min_till_now = max_prod = numbers[0] From 39ac3cb69f34f1e8c94070f0fd4714aea991d780 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:22:05 +0530 Subject: [PATCH 12/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 09ed646e7be7..739582bdb7c9 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -32,7 +32,7 @@ def max_product_subarray(numbers: list[int]) -> int: return 0 if not all(isinstance(x, (int, float)) for x in numbers): - return 0 + return 0 max_till_now = min_till_now = max_prod = numbers[0] @@ -48,3 +48,6 @@ def max_product_subarray(numbers: list[int]) -> int: max_prod = max(max_prod, max_till_now) return max_prod + + + From ea6a16cae7e92cd0540d23fbda31dcc80e41c2c1 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 06:52:36 +0000 Subject: [PATCH 13/23] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dynamic_programming/max_product_subarray.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 739582bdb7c9..5388922c3cea 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -48,6 +48,3 @@ def max_product_subarray(numbers: list[int]) -> int: max_prod = max(max_prod, max_till_now) return max_prod - - - From 45e5d97373d42632c97d598de40a4051b7ea3d94 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 12:50:05 +0530 Subject: [PATCH 14/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 5388922c3cea..137f5632db43 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -31,8 +31,8 @@ def max_product_subarray(numbers: list[int]) -> int: if n == 0: return 0 - if not all(isinstance(x, (int, float)) for x in numbers): - return 0 + if not isinstance(numbers, (list, set, tuple)) or not all(isinstance(number, int) for number in numbers): + raise TypeError("numbers must be an iterable of integers") max_till_now = min_till_now = max_prod = numbers[0] From 9e3d158d9ca8ad8f3627f52f48b954edaee3b262 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 07:21:03 +0000 Subject: [PATCH 15/23] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dynamic_programming/max_product_subarray.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 137f5632db43..0c889dea292c 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -31,7 +31,9 @@ def max_product_subarray(numbers: list[int]) -> int: if n == 0: return 0 - if not isinstance(numbers, (list, set, tuple)) or not all(isinstance(number, int) for number in numbers): + if not isinstance(numbers, (list, set, tuple)) or not all( + isinstance(number, int) for number in numbers + ): raise TypeError("numbers must be an iterable of integers") max_till_now = min_till_now = max_prod = numbers[0] From 5fa109599204aac740da7c55fa43538593116bc7 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 16:58:14 +0530 Subject: [PATCH 16/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 0c889dea292c..404593fd2da5 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -26,14 +26,11 @@ def max_product_subarray(numbers: list[int]) -> int: if numbers is None or not isinstance(numbers, list): return 0 - n = len(numbers) - - if n == 0: + if len(numbers) == 0: return 0 if not isinstance(numbers, (list, set, tuple)) or not all( - isinstance(number, int) for number in numbers - ): + isinstance(number, int) for number in numbers): raise TypeError("numbers must be an iterable of integers") max_till_now = min_till_now = max_prod = numbers[0] From 12eb7e4bbffebc3d69824f87ca3c01923ae403ff Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Thu, 30 Mar 2023 11:29:49 +0000 Subject: [PATCH 17/23] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dynamic_programming/max_product_subarray.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 404593fd2da5..0082e629cc0b 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -30,7 +30,8 @@ def max_product_subarray(numbers: list[int]) -> int: return 0 if not isinstance(numbers, (list, set, tuple)) or not all( - isinstance(number, int) for number in numbers): + isinstance(number, int) for number in numbers + ): raise TypeError("numbers must be an iterable of integers") max_till_now = min_till_now = max_prod = numbers[0] From dc92eb797b281f7ce387a3b79543a1782af6a591 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Thu, 30 Mar 2023 17:03:09 +0530 Subject: [PATCH 18/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 0082e629cc0b..a0572f47e01a 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -32,7 +32,7 @@ def max_product_subarray(numbers: list[int]) -> int: if not isinstance(numbers, (list, set, tuple)) or not all( isinstance(number, int) for number in numbers ): - raise TypeError("numbers must be an iterable of integers") + raise ValueError("numbers must be an iterable of integers") max_till_now = min_till_now = max_prod = numbers[0] From 58df0915e67fcac5c7e5541c3c969dea9b23e0d4 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Fri, 31 Mar 2023 16:18:41 +0530 Subject: [PATCH 19/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index a0572f47e01a..a387e3d789b7 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -1,4 +1,4 @@ -def max_product_subarray(numbers: list[int]) -> int: +def max_product_subarray(numbers: list[float]) -> float: """ Returns the maximum product that can be obtained by multiplying a contiguous subarray of the given integer list `nums`. @@ -11,7 +11,7 @@ def max_product_subarray(numbers: list[int]) -> int: >>> max_product_subarray([2, 3, -2, 4, -1]) 48 >>> max_product_subarray([2, 3, -2, 4.5, -1]) - 54 + ValueError: numbers must be an iterable of integers >>> max_product_subarray([-1]) -1 >>> max_product_subarray([]) From 889163b56a7f8aabf2dcc71833086e4a8b3ce799 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Fri, 31 Mar 2023 16:23:48 +0530 Subject: [PATCH 20/23] Update dynamic_programming/max_product_subarray.py Co-authored-by: Christian Clauss --- dynamic_programming/max_product_subarray.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index a387e3d789b7..9451f4ea9612 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -11,6 +11,8 @@ def max_product_subarray(numbers: list[float]) -> float: >>> max_product_subarray([2, 3, -2, 4, -1]) 48 >>> max_product_subarray([2, 3, -2, 4.5, -1]) + Traceback (most recent call last): + ... ValueError: numbers must be an iterable of integers >>> max_product_subarray([-1]) -1 From 3fc72c30ae11bedc40cf63a6db4cd9323e102819 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Fri, 31 Mar 2023 10:54:16 +0000 Subject: [PATCH 21/23] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- dynamic_programming/max_product_subarray.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 9451f4ea9612..6cf4a752717b 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -11,7 +11,7 @@ def max_product_subarray(numbers: list[float]) -> float: >>> max_product_subarray([2, 3, -2, 4, -1]) 48 >>> max_product_subarray([2, 3, -2, 4.5, -1]) - Traceback (most recent call last): + Traceback (most recent call last): ... ValueError: numbers must be an iterable of integers >>> max_product_subarray([-1]) From 87880bb4a099374396657aad0a8508f88707a504 Mon Sep 17 00:00:00 2001 From: Rohan Anand <96521078+rohan472000@users.noreply.github.com> Date: Fri, 31 Mar 2023 16:25:21 +0530 Subject: [PATCH 22/23] Update dynamic_programming/max_product_subarray.py Co-authored-by: Christian Clauss --- dynamic_programming/max_product_subarray.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 6cf4a752717b..9e0a17417eaf 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -25,7 +25,7 @@ def max_product_subarray(numbers: list[float]) -> float: >>> max_product_subarray(None) 0 """ - if numbers is None or not isinstance(numbers, list): + if not isinstance(numbers, list): return 0 if len(numbers) == 0: From 5437ee3fdd2e43990f6a9b95a29842ada98a5aa9 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Fri, 31 Mar 2023 13:12:05 +0200 Subject: [PATCH 23/23] Update max_product_subarray.py --- dynamic_programming/max_product_subarray.py | 27 +++++++++++---------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/dynamic_programming/max_product_subarray.py b/dynamic_programming/max_product_subarray.py index 9e0a17417eaf..425859bc03e3 100644 --- a/dynamic_programming/max_product_subarray.py +++ b/dynamic_programming/max_product_subarray.py @@ -1,4 +1,4 @@ -def max_product_subarray(numbers: list[float]) -> float: +def max_product_subarray(numbers: list[int]) -> int: """ Returns the maximum product that can be obtained by multiplying a contiguous subarray of the given integer list `nums`. @@ -6,32 +6,33 @@ def max_product_subarray(numbers: list[float]) -> float: Example: >>> max_product_subarray([2, 3, -2, 4]) 6 - >>> max_product_subarray([-2, 0, -1]) + >>> max_product_subarray((-2, 0, -1)) 0 >>> max_product_subarray([2, 3, -2, 4, -1]) 48 - >>> max_product_subarray([2, 3, -2, 4.5, -1]) - Traceback (most recent call last): - ... - ValueError: numbers must be an iterable of integers >>> max_product_subarray([-1]) -1 - >>> max_product_subarray([]) + >>> max_product_subarray([0]) 0 - >>> max_product_subarray("ABC") + >>> max_product_subarray([]) 0 >>> max_product_subarray("") 0 >>> max_product_subarray(None) 0 + >>> max_product_subarray([2, 3, -2, 4.5, -1]) + Traceback (most recent call last): + ... + ValueError: numbers must be an iterable of integers + >>> max_product_subarray("ABC") + Traceback (most recent call last): + ... + ValueError: numbers must be an iterable of integers """ - if not isinstance(numbers, list): - return 0 - - if len(numbers) == 0: + if not numbers: return 0 - if not isinstance(numbers, (list, set, tuple)) or not all( + if not isinstance(numbers, (list, tuple)) or not all( isinstance(number, int) for number in numbers ): raise ValueError("numbers must be an iterable of integers")