File tree Expand file tree Collapse file tree 1 file changed +57
-0
lines changed Expand file tree Collapse file tree 1 file changed +57
-0
lines changed Original file line number Diff line number Diff line change
1
+ /**
2
+ * Question Link: https://leetcode.com/problems/reverse-nodes-in-k-group/
3
+ */
4
+
5
+ /**
6
+ * Definition for singly-linked list.
7
+ * public class ListNode {
8
+ * public var val: Int
9
+ * public var next: ListNode?
10
+ * public init() { self.val = 0; self.next = nil; }
11
+ * public init(_ val: Int) { self.val = val; self.next = nil; }
12
+ * public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
13
+ * }
14
+ */
15
+
16
+ class ReverseKGroup {
17
+ func reverseKGroup( _ head: ListNode ? , _ k: Int ) -> ListNode ? {
18
+ var dummy = ListNode ( 0 , head)
19
+ var groupPrev : ListNode ? = dummy
20
+
21
+ while true {
22
+ let kth = getKth ( current: groupPrev, k: k)
23
+ if kth == nil {
24
+ break
25
+ }
26
+
27
+ let groupNext = kth? . next
28
+
29
+ var prev = kth? . next
30
+ var current = groupPrev? . next
31
+ while current !== groupNext {
32
+ let temp = current? . next
33
+ current? . next = prev
34
+ prev = current
35
+ current = temp
36
+ }
37
+
38
+ let temp = groupPrev? . next
39
+ groupPrev? . next = kth
40
+ groupPrev = temp
41
+ }
42
+
43
+ return dummy. next
44
+ }
45
+
46
+ func getKth( current: ListNode ? , k: Int ) -> ListNode ? {
47
+ var current = current
48
+ var k = k
49
+
50
+ while current != nil && k > 0 {
51
+ current = current? . next
52
+ k -= 1
53
+ }
54
+
55
+ return current
56
+ }
57
+ }
You can’t perform that action at this time.
0 commit comments