成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

劍指offer:反轉(zhuǎn)鏈表(Java)

stonezhu / 2019人閱讀

摘要:?jiǎn)栴}描述輸入一個(gè)鏈表,反轉(zhuǎn)鏈表后,輸出新鏈表的表頭。通過循環(huán)遍歷當(dāng)前鏈表,在遍歷過程中反轉(zhuǎn)鏈表,當(dāng)前節(jié)點(diǎn)遍歷到最后為時(shí),循環(huán)停止,此時(shí)當(dāng)前節(jié)點(diǎn)為,所以它的前一個(gè)節(jié)點(diǎn)就是新鏈表的第一個(gè)節(jié)點(diǎn)。

1.問題描述

輸入一個(gè)鏈表,反轉(zhuǎn)鏈表后,輸出新鏈表的表頭。

2.思路

首先要判斷給出的頭節(jié)點(diǎn)是否為空,如果為空直接返回,如果不為空才可以進(jìn)行反轉(zhuǎn)。
因?yàn)槊總€(gè)節(jié)點(diǎn)只有一個(gè)next指針記錄它的下一個(gè)節(jié)點(diǎn)的地址,所以應(yīng)該需要兩個(gè)變量分別記錄當(dāng)前節(jié)點(diǎn)左右兩邊的節(jié)點(diǎn),否則反轉(zhuǎn)鏈表之后就沒辦法連上后面的節(jié)點(diǎn)了。
通過循環(huán)遍歷當(dāng)前鏈表,在遍歷過程中反轉(zhuǎn)鏈表,當(dāng)前節(jié)點(diǎn)遍歷到最后為null時(shí),循環(huán)停止,此時(shí)當(dāng)前節(jié)點(diǎn)為null,所以它的前一個(gè)節(jié)點(diǎn)就是新鏈表的第一個(gè)節(jié)點(diǎn)。
注意當(dāng)前節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)是從null開始的,當(dāng)前節(jié)點(diǎn)一定要放在中間,記錄它的前后各一個(gè)節(jié)點(diǎn),否則循環(huán)過程易錯(cuò)。

/*
public class ListNode {
    int val;
    ListNode next = null;

    ListNode(int val) {
        this.val = val;
    }
}*/
public class Solution {
    public ListNode ReverseList(ListNode head) {
        if(head == null)
            return head;    //head為null直接返回。
        ListNode pNode = head;    //表示當(dāng)前節(jié)點(diǎn)
        ListNode pre = null;    //當(dāng)前節(jié)點(diǎn)的前一個(gè)節(jié)點(diǎn)
        ListNode next = null;    //當(dāng)前節(jié)點(diǎn)的后一個(gè)節(jié)點(diǎn)
        while(pNode != null){
            next = pNode.next;    //記錄下當(dāng)前節(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn)
            pNode.next = pre; //反轉(zhuǎn)鏈表
            pre = pNode;    //讓prej和pNode都向后移動(dòng)一位,next不用變了,因?yàn)樯厦鏁?huì)自動(dòng)根據(jù)pNode獲取next節(jié)點(diǎn)。
            pNode = next;
        }
        return pre;
    }
}

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75507.html

相關(guān)文章

  • 劍指offer系列——劍指 Offer 24. 反轉(zhuǎn)鏈表(C語言)

    摘要:假設(shè)反轉(zhuǎn)對(duì)象節(jié)點(diǎn)為,反轉(zhuǎn)指向的結(jié)點(diǎn)為,反轉(zhuǎn)后指向的結(jié)點(diǎn)為首結(jié)點(diǎn)。當(dāng)然也可以根據(jù)棧先進(jìn)后出的特點(diǎn),使用棧反轉(zhuǎn)鏈表。 ??前面的話?? 大家好!博主開辟了一個(gè)新的專欄—...

    weakish 評(píng)論0 收藏0
  • 劍指offer系列——劍指 Offer 06. 從尾到頭打印鏈表(C語言)

    摘要:導(dǎo)航小助手劍指從尾到頭打印鏈表題目詳情解題思路源代碼總結(jié)劍指從尾到頭打印鏈表題目詳情輸入一個(gè)鏈表的頭節(jié)點(diǎn),從尾到頭反過來返回每個(gè)節(jié)點(diǎn)的值用數(shù)組返回。時(shí)間復(fù)雜度方法先反轉(zhuǎn)鏈表并求長(zhǎng)度,在將反轉(zhuǎn)后的鏈表數(shù)據(jù)拷貝至數(shù)組中。 ...

    DevTTL 評(píng)論0 收藏0
  • LeetCode 精選TOP面試題【51 ~ 100】

    摘要:有效三角形的個(gè)數(shù)雙指針最暴力的方法應(yīng)該是三重循環(huán)枚舉三個(gè)數(shù)字??偨Y(jié)本題和三數(shù)之和很像,都是三個(gè)數(shù)加和為某一個(gè)值。所以我們可以使用歸并排序來解決這個(gè)問題。注意因?yàn)闅w并排序需要遞歸,所以空間復(fù)雜度為 ...

    Clect 評(píng)論0 收藏0
  • 劍指offer:合并兩個(gè)排序的鏈表Java

    摘要:?jiǎn)栴}描述輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。 1.問題描述 輸入兩個(gè)單調(diào)遞增的鏈表,輸出兩個(gè)鏈表合成后的鏈表,當(dāng)然我們需要合成后的鏈表滿足單調(diào)不減規(guī)則。 2.思路 方法1:非遞歸方法 根據(jù)題目這個(gè)很類似排序中的外排過程,兩個(gè)數(shù)組分別排好序,然后再把他們整體進(jìn)行排序.所以這道題思想很簡(jiǎn)單,就是用兩個(gè)變量分別遍歷兩個(gè)鏈表.比較遍歷到...

    darkbaby123 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<