25. Reverse Nodes in k-Group
Solution
這題我的想法是跟reverse partial list那題類似只是多增加判斷是否可以revese
public ListNode reverseKGroup(ListNode head, int k) {
ListNode dummy = new ListNode(0);
dummy.next = head;
ListNode prev = dummy;
ListNode start = prev.next;
ListNode then = start.next;
while(hasLength(start, k)){
for(int i = 0; i < k-1; i++){
start.next = then.next;
then.next = prev.next;
prev.next = then;
then = start.next;
}
prev = start;
start = start.next;
if(start == null){
break;
}
then = start.next;
}
return dummy.next;
}
public boolean hasLength(ListNode node, int len){
while(len != 0){
if(node == null) return false;
node = node.next;
len--;
}
return true;
}
Last updated
Was this helpful?