From 548872eafd91b87d3b2a45d2d5f62b17a4dc3248 Mon Sep 17 00:00:00 2001 From: dora1405 Date: Sat, 28 Mar 2020 21:33:59 -0700 Subject: [PATCH 1/3] passed tests for max_subarray --- lib/max_subarray.rb | 27 ++++++++++++++++++++++++--- lib/newman_conway.rb | 22 +++++++++++++++++++++- test/max_sub_array_test.rb | 2 +- test/newman_conway_test.rb | 2 +- 4 files changed, 47 insertions(+), 6 deletions(-) diff --git a/lib/max_subarray.rb b/lib/max_subarray.rb index 5204edb..cd83d6e 100644 --- a/lib/max_subarray.rb +++ b/lib/max_subarray.rb @@ -1,8 +1,29 @@ -# Time Complexity: ? -# Space Complexity: ? +# Time Complexity: O(n) +# Space Complexity: O(1) def max_sub_array(nums) return 0 if nums == nil + return nums[0] if nums.length == 1 + + max = nums[0] + current_sum = nums[0] + + i = 1 + + while i < nums.length + if nums[i] > current_sum + nums[i] + current_sum = nums[i] + else + current_sum += nums[i] + end + + if max < current_sum + max = current_sum + end + + i += 1 + end + + return max - raise NotImplementedError, "Method not implemented yet!" end diff --git a/lib/newman_conway.rb b/lib/newman_conway.rb index 4c985cd..3a7eb29 100644 --- a/lib/newman_conway.rb +++ b/lib/newman_conway.rb @@ -3,5 +3,25 @@ # Time complexity: ? # Space Complexity: ? def newman_conway(num) - raise NotImplementedError, "newman_conway isn't implemented" + raise ArgumentError if num < 1 + + return num.to_s if num == 1 + + answer = [] + + one_previous = 1 + two_previous = 1 + n = 2 + + while n < num + temp = one_previous + two_previous + answer << temp + two_previous = one_previous + one_previous = temp + n += 1 + end + + return answer.join(" ") + + end \ No newline at end of file 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] diff --git a/test/newman_conway_test.rb b/test/newman_conway_test.rb index 537d376..6a42001 100644 --- a/test/newman_conway_test.rb +++ b/test/newman_conway_test.rb @@ -1,6 +1,6 @@ require_relative "test_helper" -describe "Newman Conway Tests" do +xdescribe "Newman Conway Tests" do it "works with 13" do # Arrange input = 13 From 8ef214d1f72d973195e6d35653a910b60f9b6e40 Mon Sep 17 00:00:00 2001 From: dora1405 Date: Sat, 28 Mar 2020 22:14:34 -0700 Subject: [PATCH 2/3] passing tests for newman_conway --- lib/max_subarray.rb | 1 + lib/newman_conway.rb | 27 +++++++++++++-------------- test/newman_conway_test.rb | 2 +- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/max_subarray.rb b/lib/max_subarray.rb index cd83d6e..70ed8ca 100644 --- a/lib/max_subarray.rb +++ b/lib/max_subarray.rb @@ -8,6 +8,7 @@ def max_sub_array(nums) max = nums[0] current_sum = nums[0] + # start at num[1] because max and current_sum already set at num[0] i = 1 while i < nums.length diff --git a/lib/newman_conway.rb b/lib/newman_conway.rb index 3a7eb29..0cae3fb 100644 --- a/lib/newman_conway.rb +++ b/lib/newman_conway.rb @@ -1,27 +1,26 @@ -# Time complexity: ? -# Space Complexity: ? +# Time complexity: O(n) +# Space Complexity: O(n) because I have an array that is being returned as a string. Array and String both have O(n) space complexity def newman_conway(num) raise ArgumentError if num < 1 - return num.to_s if num == 1 - - answer = [] + return "1" if num == 1 + + sequence = [1, 1] + + return sequence.join(" ") if num == 2 - one_previous = 1 - two_previous = 1 - n = 2 + # Not sure why it has to start as [0,1,1]? But it works, so.....yeah. + array = [0, 1, 1] + n = 3 - while n < num - temp = one_previous + two_previous - answer << temp - two_previous = one_previous - one_previous = temp + while n <= num + sequence << array[n] = array[array[n - 1]] + array[n - array[n-1]] n += 1 end - return answer.join(" ") + return sequence.join(" ") end \ No newline at end of file diff --git a/test/newman_conway_test.rb b/test/newman_conway_test.rb index 6a42001..537d376 100644 --- a/test/newman_conway_test.rb +++ b/test/newman_conway_test.rb @@ -1,6 +1,6 @@ require_relative "test_helper" -xdescribe "Newman Conway Tests" do +describe "Newman Conway Tests" do it "works with 13" do # Arrange input = 13 From b88fb51846a60ef3a181a3965a9e30ebccccead1 Mon Sep 17 00:00:00 2001 From: dora1405 Date: Sat, 28 Mar 2020 23:03:54 -0700 Subject: [PATCH 3/3] edit base cases --- lib/newman_conway.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/newman_conway.rb b/lib/newman_conway.rb index 0cae3fb..9e52e08 100644 --- a/lib/newman_conway.rb +++ b/lib/newman_conway.rb @@ -5,10 +5,8 @@ def newman_conway(num) raise ArgumentError if num < 1 - return "1" if num == 1 - sequence = [1, 1] - + return sequence[1].to_s if num == 1 return sequence.join(" ") if num == 2 # Not sure why it has to start as [0,1,1]? But it works, so.....yeah.