查詢鍊錶中倒數第k個節點

2021-10-18 01:25:24 字數 807 閱讀 1440

1.題目描述

​ 輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,本題從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1、2、3、4、5、6。這個鍊錶的倒數第3個節點是值為4的節點。

示例:

給定乙個鍊錶: 1->2->3->4->5, 和 k = 2.

返回鍊錶 4->5.

本題對應劍指offer 22

2.解法

第一種解法是,先求出鍊錶長度length,然後length-k即為所查詢的節點,思路簡單明瞭。

public listnode getkthfromend

(listnode head,

int k)

listnode cur = head;

int length =0;

while

(cur != null)

listnode temp = head;

for(

int i =

0;i)return temp;

}

第二種解法是雙指標,雙指標也是這類問題的一種標準解法,利用雙指標的話,可以不用統計鍊錶長度

public listnode getkthfromend

(listnode head,

int k)

return slow;

}

查詢鍊錶中倒數第k個節點

問題 輸入乙個鍊錶,輸出該鍊錶中倒數第k個節點。為了符合大多數人的習慣,從1開始計數,即鍊錶的尾節點是倒數第1個節點。例如,乙個鍊錶有6個節點,從頭節點開始,它們的值依次是1 2 3 4 5 6。這個鍊錶的倒數第3個節點是值為4的節點,鍊錶節點定義如下 struct listnode 解題思路 由於...

鍊錶中倒數第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...