溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java怎么將節(jié)點轉(zhuǎn)化為兩兩合并

發(fā)布時間:2021-12-20 14:03:01 來源:億速云 閱讀:136 作者:iii 欄目:云計算

本篇內(nèi)容主要講解“Java怎么將節(jié)點轉(zhuǎn)化為兩兩合并”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Java怎么將節(jié)點轉(zhuǎn)化為兩兩合并”吧!

/**
 *
 * 轉(zhuǎn)化為兩兩合并
 */
public class ReverseKGroup {

    public static void main(String[] args) {
        ListNode l1 = new ListNode(1);
        ListNode n1 = new ListNode(3);
        ListNode n2 = new ListNode(4);
        ListNode n3 = new ListNode(5);

        l1.next = n1;
        n1.next = n2;
        n2.next = n3;

        ReverseKGroup mt = new ReverseKGroup();
        ListNode head = mt.reverseKGroup(l1,2);
        Utils.print(head);
    }


    public ListNode reverseKGroup(ListNode head, int k) {
        if (k == 1 || head == null || head.next == null)
            return head;
        ListNode preHead = new ListNode(-1);
        preHead.next = head;
        ListNode first = head, last = head;
        ListNode preGroup = preHead, nextGroup = preHead;
        int count = 1;
        while (last != null) {
            if (count == k) {          //當滿足k個組合時進行翻轉(zhuǎn)
                nextGroup = last.next; //下一個組合的首節(jié)點
                reverseList(first, last);
                preGroup.next = last;  //翻轉(zhuǎn)之后last已經(jīng)是首節(jié)點
                preGroup = first;      //preGroup設置自己為最末,此后first繼續(xù)下一個組合,采用preGroup的深意,是不打擾first繼續(xù)下一個組合


                first.next = nextGroup;
                first = nextGroup;
                last = nextGroup;
                count = 1;
                continue;
            }
            last = last.next;
            count++;
        }
        return preHead.next;
    }

    private void reverseList(ListNode head, ListNode tail) {
        ListNode pre = new ListNode(-1), node = head;
        pre.next = head;
        while (pre != tail) {
            ListNode temp = node.next;
            node.next = pre;
            pre = node;
            node = temp;
        }
    }


}

到此,相信大家對“Java怎么將節(jié)點轉(zhuǎn)化為兩兩合并”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關內(nèi)容可以進入相關頻道進行查詢,關注我們,繼續(xù)學習!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI