diff --git a/study-plan/data-structure/day-1/contains-duplicate.rb b/study-plan/data-structure/day-1/contains-duplicate.rb new file mode 100644 index 0000000..6a44b8e --- /dev/null +++ b/study-plan/data-structure/day-1/contains-duplicate.rb @@ -0,0 +1,27 @@ +# @param {Integer[]} nums +# @return {Boolean} +def contains_duplicate(nums) + encountered = Set.new + + nums.each { |x| + if encountered.add?(x) == nil then + return true + end + } + + return false +end + +RSpec.describe "contains_duplicate" do + it "nums = [1,2,3,1] contains" do + expect(contains_duplicate([1,2,3,1])).to be true + end + + it "nums = [1,2,3,4] doesn't contain" do + expect(contains_duplicate([1,2,3,4])).to be false + end + + it "nums = [1,1,1,3,3,4,3,2,4,2] contains" do + expect(contains_duplicate([1,1,1,3,3,4,3,2,4,2])).to be true + end +end diff --git a/problems/contains-duplicate.swift b/study-plan/data-structure/day-1/contains-duplicate.swift similarity index 100% rename from problems/contains-duplicate.swift rename to study-plan/data-structure/day-1/contains-duplicate.swift diff --git a/study-plan/data-structure/day-1/maximum-subarray.rb b/study-plan/data-structure/day-1/maximum-subarray.rb new file mode 100644 index 0000000..99124db --- /dev/null +++ b/study-plan/data-structure/day-1/maximum-subarray.rb @@ -0,0 +1,29 @@ +# @param {Integer[]} nums +# @return {Integer} +def max_sub_array(nums) + if nums.empty? then + return nil + end + + sum, running_sum = nums.first, nums.first + nums.drop(1).each { |x| + running_sum = [running_sum + x, x].max + sum = [sum, running_sum].max + } + + return sum +end + +RSpec.describe "max_sub_array of " do + it "[-2,1,-3,4,-1,2,1,-5,4] is 6" do + expect(max_sub_array([-2,1,-3,4,-1,2,1,-5,4])).to eq(6) + end + + it "[1] is 1" do + expect(max_sub_array([1])).to eq(1) + end + + it "[5,4,-1,7,8] is 23" do + expect(max_sub_array([5,4,-1,7,8])).to eq(23) + end +end