25. Reverse Nodes in k-Group


25. Reverse Nodes in k-Group

k 个一组反转链表

public ListNode reverseKGroup(ListNode head, int k) {
        ListNode hair = new ListNode(0);
        hair.next = head;
        ListNode pre = hair;

        while (head != null) {
            ListNode tail = pre;
            // 查看剩余部分长度是否大于等于 k
            for (int i = 0; i < k; ++i) &#123;
                tail = tail.next;
                if (tail == null) &#123;
                    return hair.next;//
                &#125;
            &#125;
            ListNode nex = tail.next;
            ListNode[] reverse = myReverse(head, tail);
            head = reverse[0];
            tail = reverse[1];
            // 把子链表重新接回原链表
            pre.next = head;
            tail.next = nex;
            pre = tail;
            head = tail.next;
        &#125;

        return hair.next;
    &#125;

    public ListNode[] myReverse(ListNode head, ListNode tail) &#123;
        ListNode prev = tail.next;//
        ListNode p = head;
        while (prev != tail) &#123;
            ListNode nex = p.next;
            p.next = prev;
            prev = p;
            p = nex;
        &#125;
        return new ListNode[]&#123;tail, head&#125;;
    &#125;

作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/reverse-nodes-in-k-group/solution/k-ge-yi-zu-fan-zhuan-lian-biao-by-leetcode-solutio/

文章作者:   future
版权声明:   本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 future !
 上一篇
88. 合并两个有序数组 88. 合并两个有序数组
88. 合并两个有序数组public void merge(int[] nums1, int m, int[] nums2, int n) &#123; // two get pointers for nums1
2021-02-26 future
下一篇 
206. Reverse Linked List 206. Reverse Linked List
206. Reverse Linked List public ListNode reverseList(ListNode head) &#123; ListNode pre=null; Li
2021-02-25 future
  目录