時間限制: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...