diff --git a/lib/max_subarray.py b/lib/max_subarray.py index 4e892e0..d928fe4 100644 --- a/lib/max_subarray.py +++ b/lib/max_subarray.py @@ -2,11 +2,25 @@ 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(n) """ if nums == None: return 0 if len(nums) == 0: return 0 - pass + + max_so_far = 0 + max_ending_here = 0 + + for val in nums: + max_ending_here += val + + if max_ending_here < 0: + max_ending_here = 0 + max_so_far = max(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..2d6eedb 100644 --- a/lib/newman_conway.py +++ b/lib/newman_conway.py @@ -1,10 +1,20 @@ - - -# Time complexity: ? -# Space Complexity: ? def newman_conway(num): """ Returns a list of the Newman Conway numbers for the given value. - Time Complexity: ? - Space Complexity: ? + Time Complexity: O(n) + Space Complexity: O(n) """ - pass + if num == 0: + raise ValueError + + if num == 1: + return '1' + + if num == 2: + return '1 1' + + sequence = [0, 1, 1] + + for i in range (3, num + 1): + sequence.append( sequence[sequence[i-1]] + sequence[i - sequence[i-1]]) + + return " ".join([str(item) for item in sequence[1:num+1]]) \ No newline at end of file