程式設計 劍指offer 鍊錶中倒數第k個結點

2021-09-04 02:15:27 字數 599 閱讀 4133

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。

這道題也很有趣,我們當然可以兩重遍歷鍊錶,第一次找到鍊錶的長度l,第二再根據鍊錶的長度l和k的差值計算出倒數第k個節點正向順序,從而得到所求的結點。但是有沒有更簡單或者代價更小得方法?

用兩個指標,用差值的方法來求倒數第k個個節點

開闢兩個指標,使得兩個指標之間相隔k個節點。(第乙個節點指向第k+1個節點,第二個節點指向頭結點)那麼當第乙個指標指向倒數第1個節點的next(空指標)時,第二個指標指向倒數第k+1個節點的next(倒數第k個節點)。

注意:本問題會產生兩種情況:1、kl,返回空指標。

/*

struct listnode

};*/

class solution

int len=0;

listnode *p = plisthead;

listnode *q = plisthead;

for(int i=0;p!=null;i++,len++)

p=p->next;

}if(k>len) return null;

return q;

}};

劍指offer 鍊錶中倒數第k個結點(鍊錶)

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。分析 兩個指標pointresult和pointend一起指向頭結點,然後根據k,移動pointend,使pointresult和pointend的距離為k 1。然後同時移動pointresult和pointend,當pointend指向最後乙個結點時,po...

《劍指offer》 鍊錶中倒數第k個結點

題目描述 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點.這種考題是比較簡單的一種,以前也碰到過類似的題目,從耗時來說,一般都是使用兩個指標,一前一後的走,中間間隔k或者k 1個步長,這個視判斷語句而定。當前乙個指標走到末端時,後乙個指標正好落在倒數第k個節點處,直接返回該節點。code public c...

劍指offer 鍊錶中倒數第K個結點

輸入乙個鍊錶,輸出該鍊錶中倒數第k 個結點。從 1開始計數,即該鍊錶的尾節點是倒數第乙個結點。思路 一 鍊錶是單向鍊錶,只能從頭結點往後依次遍歷,倒數第k 個結點,也就是從頭結點開始的 n k 1 個結點。但是需要先遍歷一遍得到鍊錶長度,然後在找第 n k 1的k 結點。二 1 方法一需要對鍊錶進行...