Skip to content

Commit 7526791

Browse files
authored
Merge pull request #616 from fartem/2363_Merge_Similar_Items
2024-05-02 v. 5.5.9: added "2363. Merge Similar Items"
2 parents db508f1 + 81982ca commit 7526791

File tree

4 files changed

+53
-1
lines changed

4 files changed

+53
-1
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,3 +419,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/).
419419
| 2347. Best Poker Hand | [Link](https://leetcode.com/problems/best-poker-hand/) | [Link](./lib/easy/2347_best_poker_hand.rb) |
420420
| 2351. First Letter to Appear Twice | [Link](https://leetcode.com/problems/first-letter-to-appear-twice/) | [Link](./lib/easy/2351_first_letter_to_appear_twice.rb) |
421421
| 2357. Make Array Zero by Subtracting Equal Amounts | [Link](https://leetcode.com/problems/make-array-zero-by-subtracting-equal-amounts/) | [Link](./lib/easy/2357_make_array_zero_by_subtracting_equal_amounts.rb) |
422+
| 2363. Merge Similar Items | [Link](https://leetcode.com/problems/merge-similar-items/) | [Link](./lib/easy/2363_merge_similar_items.rb) |

leetcode-ruby.gemspec

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ require 'English'
55
::Gem::Specification.new do |s|
66
s.required_ruby_version = '>= 3.0'
77
s.name = 'leetcode-ruby'
8-
s.version = '5.5.8'
8+
s.version = '5.5.9'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[bin/leetcode-ruby README.md LICENSE]
1111
s.executable = 'leetcode-ruby'

lib/easy/2363_merge_similar_items.rb

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# frozen_string_literal: true
2+
3+
# https://leetcode.com/problems/merge-similar-items/
4+
# @param {Integer[][]} items1
5+
# @param {Integer[][]} items2
6+
# @return {Integer[][]}
7+
def merge_similar_items(items1, items2)
8+
map = ::Array.new(1000, 0)
9+
items1.each { |item| map[item[0] - 1] = item[1] }
10+
items2.each { |item| map[item[0] - 1] = map[item[0] - 1] + item[1] }
11+
12+
result = []
13+
map.each_with_index do |num, i|
14+
next unless num.positive?
15+
16+
result << [i + 1, num]
17+
end
18+
19+
result
20+
end
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../test_helper'
4+
require_relative '../../lib/easy/2363_merge_similar_items'
5+
require 'minitest/autorun'
6+
7+
class MergeSimilarItemsTest < ::Minitest::Test
8+
def test_default
9+
assert_equal(
10+
[[1, 6], [3, 9], [4, 5]],
11+
merge_similar_items(
12+
[[1, 1], [4, 5], [3, 8]],
13+
[[3, 1], [1, 5]]
14+
)
15+
)
16+
assert_equal(
17+
[[1, 4], [2, 4], [3, 4]],
18+
merge_similar_items(
19+
[[1, 1], [3, 2], [2, 3]],
20+
[[2, 1], [3, 2], [1, 3]]
21+
)
22+
)
23+
assert_equal(
24+
[[1, 7], [2, 4], [7, 1]],
25+
merge_similar_items(
26+
[[1, 3], [2, 2]],
27+
[[7, 1], [2, 2], [1, 4]]
28+
)
29+
)
30+
end
31+
end

0 commit comments

Comments
 (0)