diff --git a/lib/max_subarray.py b/lib/max_subarray.py index 4e892e0..930bc6d 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: return 0 if len(nums) == 0: return 0 - pass + + max_sum = nums[0] + temp_sum = nums[0] + + for i in range(1, len(nums)): + current = nums[i] + temp_sum = max(current, current + temp_sum) + max_sum = max(temp_sum, max_sum) + + return max_sum diff --git a/lib/newman_conway.py b/lib/newman_conway.py index 70a3353..7c9cda7 100644 --- a/lib/newman_conway.py +++ b/lib/newman_conway.py @@ -7,4 +7,24 @@ def newman_conway(num): Time Complexity: ? Space Complexity: ? """ - pass + # P(n) = P(P(n - 1)) + P(n - P(n - 1)) - Newman Conway Sequence + if num == 0: + raise ValueError() + + if num == 1: + return "1" + if num == 2: + return "1 1" + starter_arr = [0, 1, 1] + + i = 3 + while i <= num: + starter_arr.append( + starter_arr[starter_arr[i-1]] + starter_arr[i - starter_arr[i-1]]) + i += 1 + + newman_string = "" + for i in range(1, len(starter_arr)): + newman_string += str(starter_arr[i]) + " " + + return newman_string[:-1]