乙個鍊錶中包含環,請找出該鍊錶的環的入口結點。
1、雜湊表
遍歷整個鍊錶,並將鍊錶結點存入雜湊表中(這裡我們使用容器set),如果遍歷到某個鍊錶結點已經在set中,那麼該點即為環的入口結點;
2、兩個指標
如果鍊錶存在環,那麼計算出環的長度n,然後準備兩個指標pslow,pfast,pfast先走n步,然後pslow和pfase一塊走,當兩者相遇時,即為環的入口處;
3、改進
如果鍊錶存在環,我們無需計算環的長度n,只需在相遇時,讓乙個指標在相遇點出發,另乙個指標在鍊錶首部出發,然後兩個指標一次走一步,當它們相遇時,就是環的入口處。(這裡就不說明為什麼這樣做是正確的,大家可以在紙上推導一下公式)
ac**:
1、雜湊表
/*
struct listnode
};*/
class solution
else
return phead;
}return null;
}};
2、兩個指標(改進)
/*
struct listnode
};*/
class solution
// if it is a circle
if(pfast!=null)
}return pfast;
}};
劍指 offer 系列 面試題5, 6
面試題 5 替換空格 思路一 時間複雜度為 o n2 的解法。考慮怎麼替換的操作,最直觀的方法是從頭到尾掃瞄字串,每次碰到空格後進行替換。由於是把 1 個字元替換成 3 個字元,必須將後面的向後移兩個位元組。假設字串的長度是 n。對每個空格字元,需要移動後面 o n 個字元,因此對於含有 o n 個...
《劍指Offer》面試題56 鍊錶中環的入口節點
題目 乙個鍊錶中包含環,如何找出環的入口節點?1.首先判斷該鍊錶中是否存在環 使用快慢指標來判斷 2.如果存在環,設環的節點為m個,快指標經過的節點數為2n個,慢指標經過的節點為n個,那麼快指標所走的節點為n2比慢指標n1走的節點數多m 即2n m n 個,所以n1和n2相交的位置為鍊錶的第n個節點...
劍指offer 面試題16 反轉鍊錶
題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。hint 請務必使用鍊錶 輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 0 n 1000 代表將要輸入的鍊錶的個數。輸入的第二行包含n個整數t 0 t 1000000 代表鍊錶元素。輸出 對應每個...