鍊錶判環練習

2021-07-27 09:50:15 字數 509 閱讀 9088

如何判斷乙個單鏈表是否有環?有環的話返回進入環的第乙個節點的值,無環的話返回-1。如果鍊錶的長度為n,請做到時間複雜度o(n),額外空間複雜度o(1)。

給定乙個單鏈表的頭結點head(注意另乙個引數adjust為加密後的資料調整引數,方便資料設定,與本題求解無關),請返回所求值。

弗洛伊德判環法,演算法證明

設定兩個指標,為了避免頭指標問題設定輔助頭節點,快指標每次走兩步,慢指標每次走一步,若兩個指標沒有相遇則無環,如果相遇則有環,相遇之後將快指標節點重新設定為頭結點,之後快指標和慢指標每次都只走一步,再次相遇的位置就是環入口。如果不要求空間複雜度為o(1)可以考慮直接利用雜湊表判斷是否有重複節點。第一次重複的位置就是環入口。

/*

struct listnode

};*/

class chkloop

return fast->val;}}

return -1;

}};

鍊錶17 鍊錶判環

題目 如何判斷乙個單鏈表是否有環?有環的話返回進入環的第乙個節點的值,無環的話返回 1。如果鍊錶的長度為n,請做到時間複雜度o n 額外空間複雜度o 1 給定乙個單鏈表的頭結點head 注意另乙個引數adjust為加密後的資料調整引數,方便資料設定,與本題求解無關 請返回所求值。詳見lb7,只是返回...

鍊錶,迴圈鍊錶,雙向鍊錶,判環和入環點

總結鍊錶相關練習題 鍊錶在計算機中記憶體的分配是不連續的,但是每個節點都有乙個指向下乙個節點的next引用,雙向鍊錶還有乙個指向前乙個節點的prev引用 只要獲得鍊錶的頭,那麼剩下的元素都很容易獲取了。所以鍊錶的每個節點有2個組成部分,乙個是存放資料的資料域,乙個是指向前驅或後繼的引用。public...

142 環形鍊錶 medium floyd判圈法

class solution return fast return nullptr 我沒什麼思路,就是快慢鍊錶floyd環路,學就是了。乙個快指標每次前進兩個節點,乙個慢指標一次前進乙個節點,如果快指標能走到頭,那麼說明沒有環路,如果快指標走不到頭,快指標和慢指標必相遇。快慢指標第一次相遇時把快指標...