1. 程式人生 > >騰訊面試題 快慢指標演算法快速找到單鏈表中間值

騰訊面試題 快慢指標演算法快速找到單鏈表中間值

快速找到未知長度的單鏈表的中間節點

普通方法就是遍歷兩次,第一次遍歷得到連結串列長度,第二次遍歷得到中間值。時間複雜度為1.5n。(這裡需要強調1.5) 快速連結串列方法就是利用兩個指標,慢指標每次移動一個數據,快指標每次移動兩個資料。最外層的迴圈用快指標。當快指標遍歷完後,內層慢指標剛好迴圈到一半。時間複雜度為0.5n。程式碼如下:

class  GetMidVaule(LinkList L, elmType *e){
	LinkList k,m;
	k=m=L;
	for(int i=0;k.next!=null;i++){
	k=k.next.next;
	m=m.next;
	}
*e=m.data;
}