首页 > 代码库 > [LeetCode]25 Reverse Nodes in k-Group
[LeetCode]25 Reverse Nodes in k-Group
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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。