From 3c46a903ef480afac654c6b4aab1e46ff46d6dbc Mon Sep 17 00:00:00 2001 From: Parseluni Date: Sat, 25 Dec 2021 20:57:53 -0800 Subject: [PATCH] Completed --- .vscode/settings.json | 5 +++++ lib/max_subarray.py | 22 ++++++++++++++++------ lib/newman_conway.py | 25 ++++++++++++++++++++++--- 3 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..d969f96 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "python.testing.pytestArgs": ["tests"], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} diff --git a/lib/max_subarray.py b/lib/max_subarray.py index 4e892e0..60f15b0 100644 --- a/lib/max_subarray.py +++ b/lib/max_subarray.py @@ -2,11 +2,21 @@ def max_sub_array(nums): """ Returns the max subarray of the given list of numbers. Returns 0 if nums is None or an empty list. - Time Complexity: ? - Space Complexity: ? + Time Complexity: O(n) + Space Complexity: O(1) """ - if nums == None: + if nums == None or len(nums) == 0: return 0 - if len(nums) == 0: - return 0 - pass + + partial_sum = nums[0] + max_sum = nums[0] + + for i in range(1, len(nums)): + if partial_sum + nums[i] < nums[i]: + partial_sum = nums[i] + else: + partial_sum += nums[i] + + max_sum = max(max_sum, partial_sum) + + return max_sum diff --git a/lib/newman_conway.py b/lib/newman_conway.py index 70a3353..25b8891 100644 --- a/lib/newman_conway.py +++ b/lib/newman_conway.py @@ -4,7 +4,26 @@ # Space Complexity: ? def newman_conway(num): """ Returns a list of the Newman Conway numbers for the given value. - Time Complexity: ? - Space Complexity: ? + Recursive formula: + P(1) = 1 + P(2) = 1 + for all n > 2 + P(n) = P(P(n - 1)) + P(n - P(n - 1)) + + Time Complexity: O(n) + Space Complexity: O(n) """ - pass + if num == 0: + raise ValueError + + if num == 1: + return "1" + + seq = [0, 1, 1] + + for i in range(3,num+1): + seq.append( seq[seq[i - 1]] + seq[i - seq[i - 1]]) + + + final_string = ' '.join([str(item) for item in seq[1:]]) + return final_string