From 9fa39e8873e127cd10c893a8208489b3bbc014a5 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Wed, 19 Jan 2022 18:23:55 +0100 Subject: [PATCH] data-structure(i): add day 1 Signed-off-by: Matej Focko --- .../day-1/contains-duplicate.rb | 27 +++++++++++++++++ .../day-1}/contains-duplicate.swift | 0 .../data-structure/day-1/maximum-subarray.rb | 29 +++++++++++++++++++ 3 files changed, 56 insertions(+) create mode 100644 study-plan/data-structure/day-1/contains-duplicate.rb rename {problems => study-plan/data-structure/day-1}/contains-duplicate.swift (100%) create mode 100644 study-plan/data-structure/day-1/maximum-subarray.rb 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