鍊錶中倒數第k個節點

2022-09-11 14:27:32 字數 842 閱讀 2164

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

思路1:乙個比較笨的方法是遍歷鍊錶的節點,統計從當前節點到末尾的節點數,當節點數恰好等於k時,當前節點就是鍊錶中倒數第k個節點。這種方法的時間複雜度是o(n^2),比較壞的情況是:鍊錶很長,且k很小。

c++

/**

* definition of listnode

* class listnode

* }*/class solution

return null;

}int countnodes(listnode* head)

return ret;

}};

思路2:先遍歷一次鍊錶,記下鍊錶的長度len;第二次遍歷鍊錶,走到len-k+1的位置,就是倒數第k個節點。

class solution 

cur = plisthead;

int cnt = 0;

while (cur)

return null;

}};

思路3:維護兩個指標:主指標mainptr和從指標refptr,開始都指向鍊錶頭部。先將從指標移到第k個節點,然後兩個指標同時往前走,當從指標走到最後乙個節點時,主指標所處的位置就是鍊錶倒數第k個節點。這個方法比較巧妙,只需遍歷一次鍊錶。

class solution 

while (refptr->next)

return mainptr;

}};

鍊錶中倒數第k個節點

題目 輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。struct listnode方法 定義兩個指標。第乙個指標從鍊錶的頭指標開始遍歷向前走k 1,第二個指標保持不動 從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k 1,當第乙個 走在前面的 指標到達鍊錶的尾結點時,第二...

鍊錶中倒數第k個節點

輸入乙個鍊錶,輸出該鍊錶中倒數第k個結點。ac class solution def findkthtotail self,head,k write code here 將每個節點存在棧裡,選取stack中第k個值 stack while head head head.next if k len s...

鍊錶中倒數第k個節點

acwing打卡活動 劍指offer 打卡活動 周二第十題 鍊錶中倒數第k個節點 definition for singly linked list.public class listnode 思路 設列表總結點數為n,則n k 1 為該列表的倒數第k個節點 如 n 10,k 2,則 10 2 1 ...