快慢指標在騰訊面試題的應用

2021-09-29 14:27:51 字數 993 閱讀 2424

求鍊錶的中間結點值(分奇偶結點個數情況)

(1)mid與search(搜尋指標,快指標)

(2)search是mind移動速度的2倍 (標尺的思想)

#include

using

namespace std;

//增強**的可讀性,狀態值設定為status

typedef

int status;

typedef

double elemtype;

//status狀態中ok為1,error為0

#define ok 1

#define error 0

/** * 節點的宣告

*/typedef

struct node linklist;

/** * 獲得中間結點,將其值賦予e

* @param l 單向鍊錶

* @param e 儲存器(儲存中間結點值)

* @return 狀態值

*/status getmidnode

(linklist* l, elemtype* e)

else

}//of search->next

*e = mid-

>data;

//此時search為最後乙個結點,mid為中間結點

return ok;

//結束

}

拓展:判斷單向鍊錶是否有環?

(1)用兩個指標指向煉表頭,每次迴圈,快指標往前兩步,慢指標往前一步;

(2)在迴圈過程中,如果快指標等於慢指標(相遇),則表示鍊錶有環;否則不存在環。

如何計算環的長度?

(1)在相遇點,兩個指標繼續乙個走一步,乙個走兩步,當再次相遇時,走一步的指標所走過的節點數記為環的長度。

騰訊面試題

題目 class aaa aaa pa 0x10000000 問1 pa 10 問2 char pa 10 問3 int pa 10 回答 1 0x10000000 10 16 雙位元組對齊 2 0x10000000 10 3 0x10000000 10 4 題目二 有乙個集合,由0 1000的數字...

騰訊面試題

版上看到的,好東西得記下來。1.有1到10w這10w個數,去除2個並打亂次序,如何找出那兩個數。不准用位圖!關鍵 x y 1 2 3 10w a 0 a 1 a 2 a 10w 1 根據qq號做hash,整個登入時間戳。3.有乙個江洋大盜,他每次寫信都是從一張報紙上剪下單詞,再把單詞貼在信上。假如某...

騰訊面試題

題目 兩個陣列a n b n 其中a n 的各個元素值已知,現給b i 賦值,b i a 0 a 1 a 2 a n 1 a i 要求 1.不准用除法運算 2.除了迴圈計數值,a n b n 外,不准再用其他任何變數 包括區域性變數,全域性變數等 3.滿足時間複雜度o n 空間複雜度o 1 pack...