您的位置:首页 > Web前端 > Node.js

Reverse Nodes in k-Group

2015-07-16 18:32 666 查看
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
if (head == null) {
return null;
}
if (k <= 1) {
return head;
}
ListNode dummy = new ListNode(-1);
dummy.next = head;
ListNode start = dummy;
Boolean isLast = false;
while (true) {
ListNode cur = start;
for (int i = 0; i < k; i++) {
cur = cur.next;
if (cur == null) {
isLast = true;
break;
}
}
if (isLast) {
break;
}
start = myReverse(start, k);
}
return dummy.next;
}

private ListNode myReverse(ListNode start, int k) {
ListNode ptr = start.next;
for (int i = 1; i < k; i++) {
ListNode temp = ptr.next;
ptr.next = temp.next;
temp.next = start.next;
start.next = temp;
}
return ptr;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Linked List