zl程序教程

您现在的位置是:首页 >  后端

当前栏目

移除链表元素(C++)

C++链表 元素 移除
2023-09-14 09:05:15 时间

移除链表元素

难度简单1036收藏分享切换为英文接收动态反馈

给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点

示例 1:

请添加图片描述

输入: head = [1,2,6,3,4,5,6], val = 6
输出: [1,2,3,4,5]

示例 2:

输入: head = [], val = 1
输出: []

示例 3:

输入: head = [7,7,7,7], val = 7
输出: []

提示:

  • 列表中的节点数目在范围 [0, 104]
  • 1 <= Node.val <= 50
  • 0 <= val <= 50

我的代码:

/**
 * 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 == NULL) return head;
       head->next = removeElements(head->next, val);
       // 如果是要删除的value 那么就返回需要删除的节点的下一个节点 通过这种方式来删除 反之就返回原来的
        return head->val == val ? head->next :head;
    }
};

对应我的掘金文章:https://juejin.cn/post/7147271288426332168