diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..9b38853 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,7 @@ +{ + "python.testing.pytestArgs": [ + "tests" + ], + "python.testing.unittestEnabled": false, + "python.testing.pytestEnabled": true +} \ No newline at end of file diff --git a/lib/max_subarray.py b/lib/max_subarray.py index 4e892e0..b166015 100644 --- a/lib/max_subarray.py +++ b/lib/max_subarray.py @@ -2,11 +2,19 @@ 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: return 0 if len(nums) == 0: return 0 - pass + + final_max = nums[0] + temp_max = nums[0] + + for i in range(1, len(nums)): + temp_max = max(temp_max + nums[i], nums[i]) + if temp_max > final_max: + final_max = temp_max + return final_max diff --git a/lib/newman_conway.py b/lib/newman_conway.py index 70a3353..104b0fe 100644 --- a/lib/newman_conway.py +++ b/lib/newman_conway.py @@ -7,4 +7,29 @@ def newman_conway(num): Time Complexity: ? Space Complexity: ? """ - pass + + # p1 = 1 + # p2 = 1 + # for all num > 2 + # P(n) = P(P(n - 1)) + P(n - P(n - 1)) + + if num <= 0: + raise ValueError("Number must be greater than 0!") + + if num == 1: + return "1" + + newman_seq = [None] * (num) + newman_seq[0] = 1 + newman_seq[1] = 1 + + n = 2 + while n < num: + newman_seq[n] = newman_seq[newman_seq[n -1 ] - 1] + newman_seq[n-newman_seq[n - 1]] + n += 1 + + output_seq = " ".join(map(str, newman_seq)) + return output_seq + + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7ae438f --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "dynamic-programming", + "lockfileVersion": 2, + "requires": true, + "packages": {} +}