1樓:匿名使用者
址值是否已經存在於上面建立的hash表中。
如何判斷單連結串列是否相交併找出第一交點
2樓:世紀網路
1.判斷連結串列否是相交?
解法一:雜湊表法,維護乙個雜湊表,分別遍歷兩個連結串列。將它們中的元素存入雜湊表中,如果元素有重複那麼兩個連結串列就相交。
解法二:還有一種比較有想象力的解法,先遍歷第乙個連結串列到他的尾部,然後將尾部的next指標指向第二個連結串列(尾部指標的next本來指向的是null)。這樣兩個連結串列就合成了乙個連結串列,判斷原來的兩個連結串列是否相交也就轉變成了判斷新的連結串列是否有環的問題了:
即判斷單連結串列是否有環?
這樣進行轉換後就可以從連結串列頭部進行判斷了,其實並不用。通過簡單的瞭解我們就很容易知道,如果新連結串列是有環的,那麼原來第二個連結串列的頭部一定在環上。因此我們就可以從第二個連結串列的頭部進行遍歷的,從而減少了時間複雜度(減少的時間複雜度是第乙個連結串列的長度)。
解法三:仔細研究兩個連結串列,如果他們相交的話,那麼他們最後的乙個節點一定是相同的,否則是不相交的。因此判斷兩個連結串列是否相交就很簡單了,分別遍歷到兩個連結串列的尾部,然後判斷他們是否相同,如果相同,則相交;否則不相交。
2.如果相交求出交點?
解法一:如果可以分配較多的記憶體,先遍歷連結串列a,遍歷連結串列a的時候將node加入到乙個hash表或者二叉樹中。之後遍歷連結串列b的node時,檢查該node是否存在在資料結構中對應的位置就可以了。
可能會比原始方法快一些(如果交點在連結串列中靠後的位置,這個代價可能就比較大了,因為要維護多餘的資料結構,因此這種情況下實踐中效率很可能比原始方法慢),不過會使用較多的記憶體空間。
解法二:遍歷兩個表分別知道兩個表的長度a, b。然後讓長表先走|a-b|步後,短表再開始走,直到相同,則相同的的第乙個節點為交點。
如何判斷兩個單向連結串列是否有相交,並找出交點
3樓:薔觀九
連結串列1,2均沒有環。
把連結串列1首尾相連,判斷連結串列2是否有環,若有環,則相交。
基本思路2:
遍遍歷連結串列1,2,若尾指標相等,則相交。
連結串列1和連結串列2的長度想減求絕對值,較長的連結串列先移動差值個位置,然後兩個連結串列同時移動,相等的地方即為交點。演算法也不給出了。
Java中如何判斷兩個String是否相等
通過equals進行判斷字串是否不相等.string中equals 方法 覆蓋了父類的object方法,比較規則為 如果兩個物件的型別一致,並且內容一致,則返回true,否則返回false.例如 string a abc string b abc if a.equals b else object ...
如何判斷兩個人價值觀是否一樣,如何正確判斷乙個人的價值觀是否和你一致
當你對乙個人沒有感覺了,你會找到許多理由不去愛他。交流,時間長了,你就知道了 認為判斷兩個人的價值抄觀是一樣的話,最好的方法那就是兩個人同時做一件事情,同時去做一件事情的話,他思考的方向都是一樣的,思考的想法都是一樣的,我覺得當兩個人同時的想法,解決事情的想法都一樣,行動的這些目標也是一致的話,我就...
怎麼判斷兩個ip是否在同一網段,怎樣判斷兩個ip是不是在同一網段
要判斷兩個ip位址是不是在同乙個網段,就將它們的ip位址分別與子網掩碼做與運算,得到的結果一網路號,如果網路號相同,就在同一子網,否則,不在同一子網。例 假定選擇了子網掩碼255.255.254.0,現在分別將上述兩個ip位址分別與掩碼做與運算,如下圖所示 211.95.165.24 1101001...