Skip to content

Commit 3a6546a

Browse files
committed
2024-11-22 v. 7.0.9.1: updated "445. Add Two Numbers II"
1 parent 9d10954 commit 3a6546a

File tree

2 files changed

+33
-17
lines changed

2 files changed

+33
-17
lines changed

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 = '7.0.9'
8+
s.version = '7.0.9.1'
99
s.license = 'MIT'
1010
s.files = ::Dir['lib/**/*.rb'] + %w[README.md]
1111
s.executable = 'leetcode-ruby'

lib/medium/445_add_two_numbers_ii.rb

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,42 @@
55
# @param {ListNode} l2
66
# @return {ListNode}
77
def add_two_numbers445(l1, l2)
8-
first_num = []
9-
while l1
10-
first_num << l1.val
11-
l1 = l1.next
12-
end
8+
r1 = reverse_list_node(l1)
9+
r2 = reverse_list_node(l2)
10+
sum = ::ListNode.new(0)
11+
p = sum
12+
carry = 0
13+
while r1 || r2
14+
a = r1.nil? ? 0 : r1.val
15+
b = r2.nil? ? 0 : r2.val
16+
c = a + b + carry
17+
18+
p.next = ::ListNode.new(c % 10)
19+
p = p.next
20+
carry = c / 10
1321

14-
second_num = []
15-
while l2
16-
second_num << l2.val
17-
l2 = l2.next
22+
r1 = r1&.next
23+
r2 = r2&.next
1824
end
1925

20-
sum = (first_num.join.to_i + second_num.join.to_i).to_s
26+
p.next = ::ListNode.new(carry) unless carry.zero?
27+
28+
reverse_list_node(sum.next)
29+
end
30+
31+
private
2132

22-
result = ::ListNode.new(0)
23-
curr = result
24-
sum.each_char do |c|
25-
curr.next = ::ListNode.new(c.to_i)
26-
curr = curr.next
33+
# @param {ListNode} head
34+
# @return {ListNode}
35+
def reverse_list_node(head)
36+
prev = nil
37+
curr = head
38+
while curr
39+
nxt = curr.next
40+
curr.next = prev
41+
prev = curr
42+
curr = nxt
2743
end
2844

29-
result.next
45+
prev
3046
end

0 commit comments

Comments
 (0)