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

溫馨提示×

溫馨提示×

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

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

給定一個鏈表,刪除鏈表的倒數第 n 個節點(已知該結點存在),并且返回鏈表的頭結點。

發布時間:2020-06-02 09:26:58 來源:網絡 閱讀:634 作者:靈谷魚 欄目:編程語言

思路:

找到倒數第n個結點的前一個結點,讓該結點的后繼為倒數第n個結點的后繼

    子問題:找到倒數第n個結點的前驅
        1.有兩個引用,第一個引用指向首節點,然后走n步
        2.第二個結點指向首節點,此時兩結點之間隔了n-1個結點,保持這樣的距離,共同向后移動
        3.當第一個引用到達尾節點時,第二個引用離尾節點有n-1個結點,
        4.此時第二個結點為倒數第n+1個結點,即倒數第n個結點的前驅
    特殊情況:
        1.鏈表只有一個結點或者為空鏈表,直接返回空即可;
        2.鏈表的長度剛好等于n,即刪除首節點,第一個引用從頭結點開始移動n步后,
        第一個引用移動到了尾節點的下一個,即此時第一個引用為空,
        出現第一個在移動n步后為空的情況時,說明要刪除的是首節點,直接將首節點定為首節點的下一個即可

參考代碼:

public static ListNode removeNthFromEnd(ListNode head, int n) {
        //如果鏈表本身為空或者只有一個結點,直接返回空即可
        if(head==null||head.next==null){
            return null;
        }
        ListNode cur=head;
        ListNode pre=head;
        for(int i=0;i<n;i++){
            cur=cur.next;
        }
        if(cur==null){
            head=head.next;
            return head;
        }
        while(cur.next!=null){
            cur=cur.next;
            pre=pre.next;
        }

        pre.next=pre.next.next;
        return head;
    }
向AI問一下細節

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

AI

焦作市| 南华县| 新龙县| 呼和浩特市| 阿勒泰市| 南丹县| 康平县| 福贡县| 北京市| 临泽县| 炉霍县| 汉寿县| 全南县| 青浦区| 松桃| 尉氏县| 巫山县| 长寿区| 安顺市| 海丰县| 营口市| 从化市| 甘肃省| 鹤山市| 栾川县| 柯坪县| 齐河县| 三台县| 健康| 什邡市| 金阳县| 滨海县| 鄂尔多斯市| 乐陵市| 冀州市| 高阳县| 宁安市| 贵阳市| 上高县| 山阴县| 河北区|