91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

Java復雜鏈表的示例分析

發布時間:2022-03-04 10:01:49 來源:億速云 閱讀:127 作者:小新 欄目:開發技術

這篇文章將為大家詳細講解有關Java復雜鏈表的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

    1.題目

    請實現 copyRandomList 函數,復制一個復雜鏈表。在復雜鏈表中,每個節點除了有一個 next 指針指向下一個節點,還有一個 random 指針指向鏈表中的任意節點或者 null。

    Java復雜鏈表的示例分析

    Java復雜鏈表的示例分析

    題目來源:力扣(LeetCode)

    鏈接:https://leetcode-cn.com/problems/fu-za-lian-biao-de-fu-zhi-lcof

    2.解法

    2.1 拼接+拆分

    首先我們逐個將節點復制并且和原來的鏈表連起來得新鏈表;

    然后再構建新鏈表的random 指向。當訪問原節點 cur 的隨機指向節點 cur.random 時,對應新節點 cur.next 的隨機指向節點為 cur.random.next 

    將得到的新鏈表之間的復制節點拆分出來連成一個復制鏈表,拆分成原鏈表和復制鏈表。

    鏈表圖

    Java復雜鏈表的示例分析

     復制節點

    Java復雜鏈表的示例分析

     將復制節點的random.next 連接起來

    Java復雜鏈表的示例分析

     拆分成兩個鏈表

    Java復雜鏈表的示例分析

    3.代碼

    class Solution {
        public Node copyRandomList(Node head) {
            if(head == null) {
                return null;
            }        
            //1.復制各個鏈表,并連接
            Node cur = head;
            while (cur != null) {
                //復制
                Node prev = new Node(cur.val);
                prev.next = cur.next;
                //連接
                cur.next = prev;
                //往后走
                cur = prev.next;
            }
            //2.構建各新節點的random 指向
            cur = head;
            while (cur != null) {
                if (cur.random != null) {
                    cur.next.random = cur.random.next;
                }
                cur = cur.next.next;
            }
            //3.拆分復制的鏈表
            cur = head.next;
            Node node = head;
            Node nodeNext = head.next;
            while (cur.next != null) {
                node.next = node.next.next;
                cur.next = cur.next.next;
                node = node.next;
                cur = cur.next;
            }
            node.next = null;//尾節點
            return nodeNext;//返回新鏈表的頭結點
        }
    }

    Java復雜鏈表的示例分析

    關于“Java復雜鏈表的示例分析”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

    向AI問一下細節

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

    AI

    右玉县| 新津县| 张家界市| 邓州市| 吉安市| 竹溪县| 霍山县| 饶河县| 保德县| 舟曲县| 广宁县| 顺昌县| 澄城县| 牡丹江市| 西乌珠穆沁旗| 仙桃市| 秦皇岛市| 东方市| 杭锦后旗| 古田县| 通许县| 措勤县| 宁乡县| 宜宾市| 永和县| 老河口市| 上思县| 勐海县| 吉木萨尔县| 庆元县| 青田县| 丽水市| 灵寿县| 城市| 剑河县| 墨竹工卡县| 徐汇区| 都兰县| 渝北区| 永城市| 吴旗县|