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..24f802b 100644 --- a/lib/max_subarray.py +++ b/lib/max_subarray.py @@ -2,11 +2,23 @@ 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 + + max_so_far = 0 + max_ending_here = 0 + + for num in nums: + max_ending_here = max_ending_here + num + if max_so_far < max_ending_here: + max_so_far = max_ending_here + + if max_so_far <= 0: + return max(nums) + + return max_so_far \ No newline at end of file diff --git a/lib/newman_conway.py b/lib/newman_conway.py index 70a3353..d17dbe0 100644 --- a/lib/newman_conway.py +++ b/lib/newman_conway.py @@ -1,10 +1,22 @@ -# Time complexity: ? -# Space Complexity: ? +# Time complexity: O(n) +# Space Complexity: O(n) def newman_conway(num): - """ Returns a list of the Newman Conway numbers for the given value. - Time Complexity: ? - Space Complexity: ? + """ Returns a string of the Newman Conway numbers for the given value. + 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): + next_num = seq[seq[i-1]] + seq[i - seq[i-1]] + seq.append(next_num) + + return ' '.join([str(n) for n in seq[1:num+1]])