力扣 19. 删除链表的倒数第 N 个结点 C++

力扣 19. 删除链表的倒数第 N 个结点 C++,第1张

力扣 19. 删除链表的倒数第 N 个结点 C++

解题思路:利用双指针,指针node2先走N个值,然后循环当node2->next!=nullptr时,node1循环向后移动,当node2位于链表最后一位时,node1就是要删除节点的前一个,直接让node1->next=node1->next->next,即可

需要注意的地方:当node2移动N个值后已经是空指针时,则n==1,则说明链表只有一个元素,n!=1,则说明删除的是第一个元素,这两种情况要分开讨论

代码:

class Solution {
public:
    ListNode* removeNthFromEnd(ListNode* head, int n) {
        ListNode* node1=head,*node2=head;
        for(int i=0;inext;
        }
       
        if(node2==nullptr){
            if(n==1){
                return node1=nullptr;
            }
            else{
                return node1=node1->next;
            }
        }
        while(node2->next!=NULL){
            node2=node2->next;
            node1=node1->next;
        }
        
        node1->next=node1->next->next;
        return head;
        
    }
};

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/4949098.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-11-13
下一篇2022-11-13

发表评论

登录后才能评论

评论列表(0条)

    保存