牛客網 鍊錶中倒數第k個節點

2021-08-19 05:50:38 字數 957 閱讀 9703

題目:

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

第一種方法:

思路:  

1、新建乙個指標,用於遍歷鍊錶中所有的節點,統計節點的個數count。

2、新建乙個指標,用於統計當前指標指示節點中的第幾個元素sum。

3、判斷當前指標指示的節點是不是倒數第k個:count-sum+1。

4、注意不要忘記判斷鍊錶為空的情況。

/*

public class listnode

}*/public class solution

listnode p=head;

listnode q=head;

int count=0;

int sum=0;

while(p!=null)

while(q!=null)else

}return q;

}}

第二種方法:

上面的方法遍歷了兩次鍊錶,那麼怎麼才能遍歷一次鍊錶就能找到倒數第k個節點呢?

定義兩個指標,第乙個指標從鍊錶的頭指標開始遍歷向前走k-1個,第二個指標保持不動;從第k步開始,第二個指標也開始從鍊錶的頭指標開始遍歷。由於兩個指標的距離保持在k-1,當第乙個指標到達鍊錶的尾節點時,第二個指標指著的正好是倒數第k個節點。

注意的幾點:

1、鍊錶是否為空鍊錶。

2、鍊錶的節點總數是否超過k。

3、輸入的引數k是否為0。

/*

public class listnode

}*/public class solution

listnode p1=head;

for(int i=0;i}

listnode p2=head;

while(p1.next!=null)

return p2;

}}

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