代码随想录 Leetcode19. 删除链表的倒数第 N 个结点

发布时间:2024年01月13日

题目:


代码(首刷自解 2024年1月13日):

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        if(head == nullptr) return nullptr;
        ListNode* dummyHead = new ListNode(0,head);
        ListNode* pre = dummyHead;
        ListNode* cur = dummyHead;
        int size =  0;
        int index = 0;
        // 1.计算链表大小
        while (pre->next != nullptr) {
            pre = pre->next;
            ++size;
        }
        // 2.找到对应节点
        while (index != size - n) {
            cur = cur->next;
            ++index;
        }
        index == size-1 ?   cur->next = nullptr 
                        : cur->next = cur->next->next;

        return dummyHead->next;
    }
};

? ? ? ? 双指针,第一个指针测量链表长度,第二个指针找到对应删除节点并删除

? ? ? ? 时间复杂度:O(n) 空间复杂度O(1)

文章来源:https://blog.csdn.net/qq_52313711/article/details/135566014
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。