劍指offer——連結串列中倒數第k個結點
法一:遍歷兩次,第一次數出有幾個結點,第二次遍歷到n-k時return。結果:回家等通知
法二:類似一把尺子,可以叫他前後指標(快慢指標不準確),先讓一個指標走k-1步,然後另一個指標指向頭結點0。當快指標走到尾結點時,慢指標剛好走到n-k的位置。因為快慢指標差的距離剛好是k-1。假設結點有n個,那麼最後一個結點的位置是n-1,減去k-1剛好是n-k。
但是還是拿不到offer,因為你完全沒有考慮魯棒性
還有三點必須進行判斷
1.頭結點是否為空結點,如果為空,那麼我們會試圖訪問空指標的記憶體
2.結點總數小於k,那麼在快指標走k-1步時會直接崩潰,所以在快指標走時要判斷下一個結點是否為空,不為空才等於next
3.k<=0,直接崩潰。
總之就是檢查輸入資料的合法性。
/*
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};*/
class Solution {
public:
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) {
//遍歷一次,前後指標法,主要考慮魯棒性
if(pListHead == NULL || k<= 0){
return NULL;
}
ListNode* pre = pListHead;
ListNode* last = pListHead;
for(int i = 1; i < k; i++){
if(pre->next != NULL){
pre = pre->next;
}
else{
return NULL;
}
}
while(pre->next != NULL){
pre = pre->next;
last = last->next;
}
return last;
}
};
相關文章
- 力扣 - 劍指 Offer 22. 連結串列中倒數第k個節點力扣
- 連結串列倒數第k個結點
- 單連結串列倒數第k結點輸出
- LeetCode題解(Offer22):尋找連結串列中倒數第k個節點(Python)LeetCodePython
- 劍指offer——兩個連結串列的第一個公共結點C++C++
- [每日一題] 第十三題:連結串列中倒數第k個節點每日一題
- 166. 連結串列倒數第n個節點
- 19. 刪除連結串列的倒數第 N 個結點
- 劍指offer-----刪除連結串列中的重複節點
- 劍指 Offer 24.反轉連結串列
- 劍指 Offer 24. 反轉連結串列
- PHPer也刷《劍指Offer》之連結串列PHP
- 劍指Offer-38-兩個連結串列的第一個公共節點
- LCR 140. 訓練計劃 II 連結串列倒數第k個節點
- 【劍指offer】【3】輸入一個連結串列,從尾到頭列印連結串列每個節點的值。
- 0011 刪除連結串列的倒數第N個節點
- 【LeetCode】【連結串列】劍指 Offer 52. 兩個連結串列的第一個公共節點 思路解析和程式碼LeetCode
- 力扣 - 劍指 Offer 52. 兩個連結串列的第一個公共節點力扣
- 劍指OFFER-從頭到尾列印連結串列(Java)Java
- 2024/11/27 【連結串列】LeetCode 24 兩兩交換連結串列中的節點 & LeetCode 19 刪除連結串列的倒數第N個節點LeetCode
- 用一個儘可能高效的演算法,查詢單向連結串列(有頭結點)中倒數第k個位置上的結點演算法
- LeetCode- 19 刪除連結串列的倒數第N個節點LeetCode
- 題19. 刪除連結串列的倒數第N個節點
- Leetcode No.19 刪除連結串列的倒數第N個節點LeetCode
- leetcode每日一題—19.刪除連結串列的倒數第N個結點LeetCode每日一題
- 劍指 Offer 35. 複雜連結串列的複製
- 3. 從尾到頭列印連結串列(劍指offer)
- 劍指offer-從尾到頭列印連結串列-phpPHP
- 【連結串列問題】打卡2:刪除單連結串列的第 K個節點
- 2020-10-18 刪除連結串列的倒數第N個節點
- **24. 兩兩交換連結串列中的節點****19.刪除連結串列的倒數第N個節點****面試題 02.07. 連結串列相交****142.環形連結串列II**面試題
- Day4(連結串列)|24. 兩兩交換連結串列中的節點 & 19.刪除連結串列的倒數第N個節點 & 面試題 02.07. 連結串列相交 &142.環形連結串列II面試題
- 劍指 Offer 25. 合併兩個排序的連結串列 JavaScript實現排序JavaScript
- leetcode-019-刪除連結串列倒數第N個結點(Remove Nth Node From End of List)LeetCodeREM
- Day 4 | 24. 兩兩交換連結串列中的節點 、 19.刪除連結串列的倒數第N個節點 、面試題 02.07. 連結串列相交 、142.環形連結串列II面試題
- 查詢連結串列中倒數第k(k為正整數)個位置上的結點,查詢成功輸出該結點的data值,並返回1,否則只返回0
- 劍指offer:刪去連結串列中重複的節點。(題解原始碼加圖解)原始碼圖解
- K個節點翻轉連結串列