From 5a331c14ef3c5aea56328266a0812df52489ee46 Mon Sep 17 00:00:00 2001 From: fartem Date: Tue, 10 Dec 2024 08:54:32 +0300 Subject: [PATCH 1/2] 2024-12-10 v. 7.2.8: added "560. Subarray Sum Equals K" --- README.md | 1 + leetcode-ruby.gemspec | 2 +- lib/medium/560_subarray_sum_equals_k.rb | 31 +++++++++++++++++++ test/medium/test_560_subarray_sum_equals_k.rb | 11 +++++++ 4 files changed, 44 insertions(+), 1 deletion(-) create mode 100644 lib/medium/560_subarray_sum_equals_k.rb create mode 100644 test/medium/test_560_subarray_sum_equals_k.rb diff --git a/README.md b/README.md index 50200338..8013a91a 100644 --- a/README.md +++ b/README.md @@ -593,3 +593,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). | 535. Encode and Decode TinyURL | [Link](https://leetcode.com/problems/encode-and-decode-tinyurl/) | [Link](./lib/medium/535_encode_and_decode_tinyurl.rb) | [Link](./test/medium/test_535_encode_and_decode_tinyurl.rb) | | 538. Convert BST to Greater Tree | [Link](https://leetcode.com/problems/convert-bst-to-greater-tree/) | [Link](./lib/medium/538_convert_bst_to_greater_tree.rb) | [Link](./test/medium/test_538_convert_bst_to_greater_tree.rb) | | 556. Next Greater Element III | [Link](https://leetcode.com/problems/next-greater-element-iii/) | [Link](./lib/medium/556_next_greater_element_iii.rb) | [Link](./test/medium/test_556_next_greater_element_iii.rb) | +| 560. Subarray Sum Equals K | [Link](https://leetcode.com/problems/subarray-sum-equals-k/) | [Link](./lib/medium/560_subarray_sum_equals_k.rb) | [Link](./test/medium/test_560_subarray_sum_equals_k.rb) | diff --git a/leetcode-ruby.gemspec b/leetcode-ruby.gemspec index 8d15a0e9..ad6f5689 100644 --- a/leetcode-ruby.gemspec +++ b/leetcode-ruby.gemspec @@ -5,7 +5,7 @@ require 'English' ::Gem::Specification.new do |s| s.required_ruby_version = '>= 3.0' s.name = 'leetcode-ruby' - s.version = '7.2.7' + s.version = '7.2.8' s.license = 'MIT' s.files = ::Dir['lib/**/*.rb'] + %w[README.md] s.executable = 'leetcode-ruby' diff --git a/lib/medium/560_subarray_sum_equals_k.rb b/lib/medium/560_subarray_sum_equals_k.rb new file mode 100644 index 00000000..8e6aefb5 --- /dev/null +++ b/lib/medium/560_subarray_sum_equals_k.rb @@ -0,0 +1,31 @@ +# frozen_string_literal: true + +# https://leetcode.com/problems/subarray-sum-equals-k/ +# @param {Integer[]} nums +# @param {Integer} k +# @return {Integer} +def subarray_sum(nums, k) + result = 0 + pre = 0 + values = {} + values[0] = 1 + + nums.each do |num| + pre += num + result += values.fetch(pre - k, 0) + values[pre] = values.fetch(pre, 0) + 1 + end + + result +end + +# int result = 0; +# int pre = 0; +# Map values = new HashMap<>(); +# values.put(0, 1); +# for (int num : nums) { +# pre += num; +# result += values.getOrDefault(pre - k, 0); +# values.put(pre, values.getOrDefault(pre, 0) + 1); +# } +# return result; diff --git a/test/medium/test_560_subarray_sum_equals_k.rb b/test/medium/test_560_subarray_sum_equals_k.rb new file mode 100644 index 00000000..1f15f1cc --- /dev/null +++ b/test/medium/test_560_subarray_sum_equals_k.rb @@ -0,0 +1,11 @@ +# frozen_string_literal: true + +require_relative '../test_helper' +require_relative '../../lib/medium/560_subarray_sum_equals_k' +require 'minitest/autorun' + +class SubarraySumEqualsKTest < ::Minitest::Test + def test_default_one = assert_equal(2, subarray_sum([1, 1, 1], 2)) + + def test_default_two = assert_equal(2, subarray_sum([1, 2, 3], 3)) +end From 12ee4ad59dc74c78bee8eee9b470157139cc496a Mon Sep 17 00:00:00 2001 From: fartem Date: Tue, 10 Dec 2024 08:56:45 +0300 Subject: [PATCH 2/2] 2024-12-10 v. 7.2.7: removed comments from "560. Subarray Sum Equals K" --- lib/medium/560_subarray_sum_equals_k.rb | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/lib/medium/560_subarray_sum_equals_k.rb b/lib/medium/560_subarray_sum_equals_k.rb index 8e6aefb5..870561ac 100644 --- a/lib/medium/560_subarray_sum_equals_k.rb +++ b/lib/medium/560_subarray_sum_equals_k.rb @@ -18,14 +18,3 @@ def subarray_sum(nums, k) result end - -# int result = 0; -# int pre = 0; -# Map values = new HashMap<>(); -# values.put(0, 1); -# for (int num : nums) { -# pre += num; -# result += values.getOrDefault(pre - k, 0); -# values.put(pre, values.getOrDefault(pre, 0) + 1); -# } -# return result;