【leetcode】19 刪除鏈表的倒數第N個節點

題目描述:

https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/submissions/

思路:

快慢指針。

快指針先走n步,

如果快指針指向nullptr,則刪除的是第一個節點,返回head->next,

否則,快慢指針一起走,直到快指針走到尾巴,此時慢指針指向的下一個就是要刪除的節點,把慢指針的next移到下一個的下一個。返回頭結點。

代碼實現:

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        if(head == NULL) return NULL;
        ListNode* fast = head, *slow = head;
        for(int i = 0 ; i < n; i++) fast = fast->next;
        if(!fast) return head->next;
        while(fast->next){
            fast = fast->next;
            slow = slow->next;
        }
        slow->next = slow->next->next;
        return head;
    }
};

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章