-
Notifications
You must be signed in to change notification settings - Fork 0
/
ReverseNodesInKGroup.java
42 lines (40 loc) · 1.28 KB
/
ReverseNodesInKGroup.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import common.ListNode;
/*
* https://leetcode.com/problems/reverse-nodes-in-k-group/
*/
public class ReverseNodesInKGroup {
public ListNode reverseKGroup(ListNode head, int k) {
if (head == null) {
return head;
}
ListNode kthNode = head;
for (int i = 0; i < k - 1; i++) {
kthNode = kthNode.next;
if (kthNode == null) {
return head;
}
}
ListNode kPlusOnethNode = kthNode.next;
ListNode currentNode = head;
ListNode nextNode = currentNode.next;
ListNode nextNextNode;
for (int i = 0; i < k - 1; i++) {
nextNextNode = nextNode.next;
nextNode.next = currentNode;
currentNode = nextNode;
nextNode = nextNextNode;
}
head.next = reverseKGroup(kPlusOnethNode, k);
return kthNode;
}
public static void main(String[] args) {
System.out.println(new ReverseNodesInKGroup().reverseKGroup(
new ListNode(1,
new ListNode(2,
new ListNode(3,
new ListNode(4,
new ListNode(5))))),
3
)); // 3,2,1,4,5
}
}