diff --git a/README.md b/README.md index abfe6a19..f36aed37 100644 --- a/README.md +++ b/README.md @@ -574,3 +574,4 @@ Profile on LeetCode: [fartem](https://leetcode.com/fartem/). | 438. Find All Anagrams in a String | [Link](https://leetcode.com/problems/find-all-anagrams-in-a-string/) | [Link](./lib/medium/438_find_all_anagrams_in_a_string.rb) | [Link](./test/medium/test_438_find_all_anagrams_in_a_string.rb) | | 442. Find All Duplicates in an Array | [Link](https://leetcode.com/problems/find-all-duplicates-in-an-array/) | [Link](./lib/medium/442_find_all_duplicates_in_an_array.rb) | [Link](./test/medium/test_442_find_all_duplicates_in_an_array.rb) | | 443. String Compression | [Link](https://leetcode.com/problems/string-compression/) | [Link](./lib/medium/443_string_compression.rb) | [Link](./test/medium/test_443_string_compression.rb) | +| 445. Add Two Numbers II | [Link](https://leetcode.com/problems/add-two-numbers-ii/) | [Link](./lib/medium/445_add_two_numbers_ii.rb) | [Link](./test/medium/test_445_add_two_numbers_ii.rb) | diff --git a/leetcode-ruby.gemspec b/leetcode-ruby.gemspec index 6e78915f..6daebc77 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.0.8' + s.version = '7.0.9' s.license = 'MIT' s.files = ::Dir['lib/**/*.rb'] + %w[README.md] s.executable = 'leetcode-ruby' diff --git a/lib/medium/445_add_two_numbers_ii.rb b/lib/medium/445_add_two_numbers_ii.rb new file mode 100644 index 00000000..9a38fa24 --- /dev/null +++ b/lib/medium/445_add_two_numbers_ii.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +# https://leetcode.com/problems/add-two-numbers-ii/ +# @param {ListNode} l1 +# @param {ListNode} l2 +# @return {ListNode} +def add_two_numbers445(l1, l2) + first_num = [] + while l1 + first_num << l1.val + l1 = l1.next + end + + second_num = [] + while l2 + second_num << l2.val + l2 = l2.next + end + + sum = (first_num.join.to_i + second_num.join.to_i).to_s + + result = ::ListNode.new(0) + curr = result + sum.each_char do |c| + curr.next = ::ListNode.new(c.to_i) + curr = curr.next + end + + result.next +end diff --git a/test/medium/test_445_add_two_numbers_ii.rb b/test/medium/test_445_add_two_numbers_ii.rb new file mode 100644 index 00000000..dce84b9f --- /dev/null +++ b/test/medium/test_445_add_two_numbers_ii.rb @@ -0,0 +1,56 @@ +# frozen_string_literal: true + +require_relative '../test_helper' +require_relative '../../lib/common/linked_list' +require_relative '../../lib/medium/445_add_two_numbers_ii' +require 'minitest/autorun' + +class AddTwoNumbersIITest < ::Minitest::Test + def test_default_one + assert( + ::ListNode.are_equals( + ::ListNode.from_array( + [7, 8, 0, 7] + ), + add_two_numbers445( + ::ListNode.from_array( + [7, 2, 4, 3] + ), + ::ListNode.from_array( + [5, 6, 4] + ) + ) + ) + ) + end + + def test_default_two + assert( + ::ListNode.are_equals( + ::ListNode.from_array( + [8, 0, 7] + ), + add_two_numbers445( + ::ListNode.from_array( + [2, 4, 3] + ), + ::ListNode.from_array( + [5, 6, 4] + ) + ) + ) + ) + end + + def test_default_three + assert( + ::ListNode.are_equals( + ::ListNode.from_array([0]), + add_two_numbers445( + ::ListNode.from_array([0]), + ::ListNode.from_array([0]) + ) + ) + ) + end +end