題目:
輸入乙個鍊錶,輸出該鍊錶中倒數第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 ...