如何判斷兩個鍊表是否有交點,如何判斷單個鍊表是否相交並找到第乙個交點

發布 科技 2024-03-12
2個回答
  1. 匿名使用者2024-02-06

    1.確定鍊表是否相交?

    解決方案一:雜湊表方法,維護乙個雜湊表,分別遍歷兩個鍊表。 其中的元素儲存在雜湊表中,如果元素重複,則兩個鍊表相交。

    解決方案 2:還有乙個更具想象力的解決方案,首先遍歷第乙個鍊表到它的尾部,然後將尾部的下乙個指標指向第二個鍊表(尾部的下乙個指標最初指向 null)。 這樣一來,兩個鍊表就合併成乙個鍊表,確定原來的兩個鍊表是否相交就變成了判斷新鍊表是否有迴圈的問題

    也就是說,確定單鏈表是否有環?

    這樣,轉換後,可以從鍊表的標題來判斷,但是沒有使用。 通過簡單的理解,很容易知道,如果新的鍊表有乙個環,那麼原來的第二個鍊表的頭部一定在環上。 因此,我們可以從第二個鍊表的頭部遍歷,從而降低時間複雜度(降低的時間複雜度是第乙個鍊表的長度)。

    解決方法3:仔細研究兩個鍊表,如果它們相交,那麼它們的最後乙個節點一定是相同的,否則就是不相交的。 因此,判斷兩個鍊表是否相交非常簡單,分別迭代到兩個鍊表的尾部,然後判斷它們是否相同,如果相同,則相交; 否則,它們不會相交。

    2.如果發現交叉路口是交叉路口?

    解決方案1:如果可以分配更多的記憶體,則先遍歷鍊表A,在遍歷鍊表A時將節點新增到雜湊表或二叉樹中。 稍後,在遍歷鍊表 b 的節點時,可以檢查該節點在資料結構中是否有相應的位置。

    它可能比原始方法更快(如果鍊表中的交集較低,則成本可能更高,因為需要維護冗餘資料結構,因此在實踐中可能比原始方法慢),但它會使用更多的記憶體空間。

    解決方案 2:遍歷兩個表以了解兩個表 a、b 的長度。 然後讓長桌先走a-b|步驟過後,短桌又開始走,直到它相同,相同的第乙個節點是交點。

  2. 匿名使用者2024-02-05

    鍊表 1 和 2 沒有環。

    將鍊表 1 端到端連線以確定鍊表 2 是否具有迴圈,如果有,則相交。

    基本思想2:

    遍歷鍊表 1,2 如果尾指標相等,則相交。

    如果要減去鍊表1和鍊表2長度的絕對值,則較長的鍊表先將差位移動乙個位置,然後兩個鍊表同時移動,相等的位置為交點。 也沒有給出演算法。

相關回答
11個回答2024-03-12

可以使用避障感測器或超聲波感測器(HC-SR04)。

14個回答2024-03-12

判斷汽車是否浸泡在水中的四種簡單易學的方法: >>>More

8個回答2024-03-12

你怎麼知道乙個男人是否想娶你? 看看這幾點。

24個回答2024-03-12

不好說,就看你對自己有沒有足夠自信了,你看馮姐也在微博上發了這麼一句話"我只是照了照鏡子,突然發現自己很漂亮"。如果你比較出眾,但是你不喜歡你最近喜歡的那種臉型,那麼你會覺得醜,為什麼不是那種臉型呢? 你會開始抱怨你的外表。 >>>More

5個回答2024-03-12

如果你營養不良,你可以從你的臉上看出來。