标签:leetcode
https://oj.leetcode.com/problems/reverse-nodes-in-k-group/
http://fisherlei.blogspot.com/2012/12/leetcode-reverse-nodes-in-k-group.html
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode reverseKGroup(ListNode head, int k) {
if (head == null || k <= 1)
return head;
ListNode thehead = head;
ListNode thetail = head;
ListNode lasttail = null;
ListNode toReturn = null;
int i = 1;
while (thetail != null)
{
thetail = thetail.next;
i ++;
if (i == k && thetail != null)
{
i = 1;
HaT hat = reverse(thehead, thetail);
if (toReturn == null)
toReturn = hat.head;
thehead = hat.tail.next;
thetail = hat.tail.next;
if (lasttail != null)
lasttail.next = hat.head;
lasttail = hat.tail;
}
}
if (toReturn == null)
toReturn = head;
return toReturn;
}
// Reverse head & tail.pre
private HaT reverse(ListNode head, ListNode tail)
{
// head -> node -> ... -> tail
ListNode lastnode = head;
ListNode node = head.next;
while (head != tail)
{
ListNode next = node.next;
lastnode.next = next;
node.next = head;
head = node;
node = next;
}
return new HaT(head, lastnode);
}
private static class HaT
{
ListNode head;
ListNode tail;
HaT(ListNode head, ListNode tail)
{
this.head = head;
this.tail = tail;
}
}
}[LeetCode]25 Reverse Nodes in k-Group
标签:leetcode
原文地址:http://7371901.blog.51cto.com/7361901/1598425