标签: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