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

資訊專(zhuān)欄INFORMATION COLUMN

鏈表中環(huán)的入口節(jié)點(diǎn)

qpal / 744人閱讀

摘要:題目描述給一個(gè)鏈表,若其中包含環(huán),請(qǐng)找出該鏈表的環(huán)的入口結(jié)點(diǎn),否則,輸出。

題目描述

給一個(gè)鏈表,若其中包含環(huán),請(qǐng)找出該鏈表的環(huán)的入口結(jié)點(diǎn),否則,輸出null。

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

    ListNode(int val) {
        this.val = val;
    }
}
*/
public class Solution {

    public ListNode EntryNodeOfLoop(ListNode pHead){
        
    }
}
解法一

遍歷鏈表的時(shí)候,用一個(gè)容器list依次裝入鏈表的節(jié)點(diǎn),如果發(fā)現(xiàn)有重復(fù)的節(jié)點(diǎn),那么就是鏈表的環(huán)的入口節(jié)點(diǎn)

import java.util.ArrayList;
public class Solution {

    public ListNode EntryNodeOfLoop(ListNode pHead){
        ArrayList list = new ArrayList<>();
        while (!list.contains(pHead) && pHead != null){
            list.add(pHead);
            pHead = pHead.next;
        }

        return pHead;
    }
}

時(shí)間復(fù)雜度:O(n^2)

解法二

采用雙指針的方法(這個(gè)方法還可以用來(lái)判斷鏈表中有沒(méi)有環(huán)),一個(gè)快指針一個(gè)慢指針,快指針一次走兩步,慢指針一次走一步,如果鏈表中有環(huán),那么兩個(gè)指針一定就可以相遇,并且相遇的地方,一定在環(huán)的某處

設(shè)相遇的地方距環(huán)的入口點(diǎn)一邊有a個(gè)節(jié)點(diǎn),一邊有b個(gè)節(jié)點(diǎn),鏈表除環(huán)以外有x個(gè)節(jié)點(diǎn),環(huán)中一共有c個(gè)節(jié)點(diǎn)(c=a+b)

那么可以得到如下關(guān)系式,用b = c -a表示

][1]

 public ListNode EntryNodeOfLoop(ListNode pHead){
        if(pHead == null || pHead.next == null)return  null;
        ListNode slow = pHead.next;
        ListNode fast = pHead.next.next;
        while (slow != fast && pHead != null){
            slow = slow.next;
            fast = fast.next.next;
        }
        slow = pHead;
        while(slow != fast){
            slow = slow.next;
            fast = fast.next;
        }
        return slow;
    }

該方法的時(shí)間復(fù)雜度為O(n)

參考

《劍指offer》——鏈表中環(huán)的入口結(jié)點(diǎn)

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

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

相關(guān)文章

  • 寫(xiě)一段代碼判斷單向鏈表中有沒(méi)有形成環(huán),如果形成環(huán),請(qǐng)找出環(huán)入口處,即P點(diǎn)

    摘要:由于要比移動(dòng)的快,如果有環(huán),一定會(huì)先進(jìn)入環(huán),而后進(jìn)入環(huán)。現(xiàn)在問(wèn)題就簡(jiǎn)單了,由于移動(dòng)的距離永遠(yuǎn)是的一般,因此當(dāng)遍歷玩整個(gè)環(huán)長(zhǎng)度個(gè)節(jié)點(diǎn)的時(shí)候正好遍歷了個(gè)節(jié)點(diǎn),也就是說(shuō),此時(shí)正好指向距離最遠(yuǎn)的點(diǎn)。 首先,關(guān)于單鏈表中的環(huán),一般涉及到以下問(wèn)題: 1.給一個(gè)單鏈表,判斷其中是否有環(huán)的存在; 2.如果存在環(huán),找出環(huán)的入口點(diǎn); 3.如果存在環(huán),求出環(huán)上節(jié)點(diǎn)的個(gè)數(shù); 4.如果存在環(huán),求出鏈表的長(zhǎng)度; ...

    OldPanda 評(píng)論0 收藏0
  • leetcode 鏈表相關(guān)題目解析

    摘要:同時(shí)保有當(dāng)前鏈表的尾部的指針以及頭部的節(jié)點(diǎn)指針。鏈表可能只有部分成環(huán)這意味著。頭部的引用尾部的引用始終指向尾部忽略虛假的頭部鏈表相加原題地址。生成虛假的頭部后兩個(gè)鏈表兩兩相加注意進(jìn)位以及保留位即可。鏈表是沒(méi)有發(fā)生改變的。 showImg(https://segmentfault.com/img/remote/1460000018562166?w=1069&h=600); 前言 本文基于...

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

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

0條評(píng)論

qpal

|高級(jí)講師

TA的文章

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