Skip to content

Commit 3f2ebad

Browse files
committed
reverse_k_group
1 parent 10a0de1 commit 3f2ebad

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed

reverse_k_group.rb

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
# Definition for singly-linked list.
2+
# class ListNode
3+
# attr_accessor :val, :next
4+
# def initialize(val = 0, _next = nil)
5+
# @val = val
6+
# @next = _next
7+
# end
8+
# end
9+
10+
def reverse_k_group(head, k)
11+
return head if head.nil? || k == 1
12+
13+
dummy = ListNode.new(0)
14+
dummy.next = head
15+
prev_group = dummy
16+
17+
while true
18+
kth = prev_group
19+
k.times do
20+
kth = kth.next
21+
return dummy.next if kth.nil?
22+
end
23+
24+
group_next = kth.next
25+
prev, curr = group_next, prev_group.next
26+
27+
while curr != group_next
28+
temp = curr.next
29+
curr.next = prev
30+
prev = curr
31+
curr = temp
32+
end
33+
34+
temp = prev_group.next
35+
prev_group.next = kth
36+
prev_group = temp
37+
end
38+
end

0 commit comments

Comments
 (0)