diff --git a/lib/max_subarray.rb b/lib/max_subarray.rb index 5204edb..262b723 100644 --- a/lib/max_subarray.rb +++ b/lib/max_subarray.rb @@ -1,8 +1,26 @@ -# Time Complexity: ? -# Space Complexity: ? +# Time Complexity: O(n) where n is the length of nums +# Space Complexity: O(1) def max_sub_array(nums) - return 0 if nums == nil - - raise NotImplementedError, "Method not implemented yet!" + return nil if nums.length == 0 + + max = nums[0] + current_count = 0 + + i = 0 + while i < nums.length + current_count += nums[i] + + if current_count > max + max = current_count + end + + if current_count < 0 + current_count = 0 + end + + i += 1 + end + + return max end diff --git a/lib/newman_conway.rb b/lib/newman_conway.rb index 4c985cd..46584bf 100644 --- a/lib/newman_conway.rb +++ b/lib/newman_conway.rb @@ -1,7 +1,30 @@ -# Time complexity: ? -# Space Complexity: ? +# Time complexity: O(n) where n is the size of num +# Space Complexity: O(n) bc I am making an array dependent on size of num, n def newman_conway(num) - raise NotImplementedError, "newman_conway isn't implemented" -end \ No newline at end of file + if num == 0 + raise ArgumentError, "Invalid, you can't use 0!" + elsif num == 1 + return "1" + elsif num == 2 + return "1 1" + end + + p = Array.new(num) + p[0] = nil + p[1] = 1 + p[2] = 1 + + sequence = "1 1" + + i = 3 + while i <= num + p[i] = p[p[i - 1]] + p[i - p[i - 1]] + sequence += " #{p[i]}" + + i += 1 + end + + return sequence +end diff --git a/test/max_sub_array_test.rb b/test/max_sub_array_test.rb index 3253cdf..e27e1ca 100644 --- a/test/max_sub_array_test.rb +++ b/test/max_sub_array_test.rb @@ -1,6 +1,6 @@ require_relative "test_helper" -xdescribe "max subarray" do +describe "max subarray" do it "will work for [-2,1,-3,4,-1,2,1,-5,4]" do # Arrange input = [-2,1,-3,4,-1,2,1,-5,4]