0
点赞
收藏
分享

微信扫一扫

推荐一个内网穿透工具,支持Windows桌面、Linux、Arm平台客户端

大柚子top 2024-02-22 阅读 12

思路:不同的情况出现了,就是第一个节点要是为等于val的节点,可以新建一个节点,并next指向head,这样就可以遍历新的链表来删除节点

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode() : val(0), next(nullptr) {}
 *     ListNode(int x) : val(x), next(nullptr) {}
 *     ListNode(int x, ListNode *next) : val(x), next(next) {}
 * };
 */
class Solution {
public:
    ListNode* removeElements(ListNode* head, int val) {
        //如果为空链表则返回空链表
        if(head == nullptr) return head;
        //新建一个节点next指向head  res->next =head
        ListNode* res = new ListNode(0,head);
        ListNode* cur = res;
        while(cur->next != nullptr){
            //如果等于则跳过
            if(cur->next->val == val){
                cur->next = cur->next->next;
            }
            else{
                //如果不等于则继续遍历
                cur = cur->next;
            }
        }
        //返回新建节点的next得到答案
        return res->next;
    }
};
举报

相关推荐

0 条评论