鍊錶中倒數第k個元素

2021-08-16 21:06:18 字數 451 閱讀 8113

時間限制:1秒

空間限制:32768k

熱度指數:301751

本題知識點: 

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

class solution 

while (phead->next!=null)

return ptail;

}};

解題思路:

傳統方法是從左到右遍歷一遍,得出鍊錶中的結點總數,然後計算倒數第k個結點是正數的第幾個,然後再從頭開始再遍歷一遍,但是此時時間複雜度增加。

使用只遍歷一遍的簡單演算法:先從1到k遍歷,設定指標head不斷向後遍歷,若遇到空指標,則直接返回空指標,說明鍊錶中的元素不足k個,k之後進行遍歷,其值tail指標指向前面的元素,head指標指向後面的元素,head和tail指標正好相差k個元素,當head指向鍊錶額末尾時,正好tail指向第k個元素。

找出鍊錶倒數第K個元素

思路 可設兩個頭指標p1和p2,當p2開始向前走,當走的步數為k時,p1開始走,此時當p2走到結尾時,p1所指的位置正好為倒數第k個元素的位置 class listnode override public string tostring return sb.tostring public stati...

在鍊錶中查詢倒數第k個元素

第一種思路 第二種思路 注意 檔名 listnode.h pragma once ifndef listnode h define listnode h include using namespace std 定義鍊錶結構體 templatet struct listnode listnode t ...

鍊錶 獲取鍊錶的倒數第k個元素

思路1 暴力 先暴力一次鍊錶,記錄鍊錶的長度n,第二次遍歷n k 1個元素,返回,一共需要2n 1 k個 思路2 兩個指標,左右指標相差k 1個距離,有指標到達鍊錶末尾時,做指標指向倒數第k個元素.經典思路,兩個指標相差k個間隔 思路2實現 public static node getfindnfr...