劍指offer每日一題算法題(java解法)
方便日後複習,從今天開始。
算法之行始於足下
[編程題]鏈表的倒數第n個節點-- Java實現
------------------------------------------------------------------------------------------------------
題目描述
輸入一個鏈表,輸出該鏈表中倒數第k個結點
解題思路:
1.鏈表的指針不停指向下一個,然後記錄有多少個節點。(注意用新的指針,因爲指針指向了下一個調不回來)
2.倒數第k個也就是正數的第n-k個節點,再用指針指過去即可
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode FindKthToTail(ListNode head,int k) {
if(head==null){
return null;
}
ListNode node=head;
int count=0;
while (node != null) {
count++;
node = node.next;
}
if (count < k) return null;
ListNode p = head;
for (int i = 0; i < count - k; i++) {
p = p.next;
}
return p;
}
}