203. Remove Linked List Elements

Given the head of a linked list and an integer val, remove all the nodes of the linked list that has Node.val == val, and return the new head.

Example 1:

复制代码
Input: head = [1,2,6,3,4,5,6], val = 6
Output: [1,2,3,4,5]

Example 2:

复制代码
Input: head = [], val = 1
Output: []

Example 3:

复制代码
Input: head = [7,7,7,7], val = 7
Output: []

Constraints:

  • The number of nodes in the list is in the range [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) {
      struct ListNodedummyHead=new ListNode(0,head);
      struct ListNode
      pre=dummyHead;
      while(pre->next!=NULL){
      if(pre->next->val==val){
      pre->next=pre->next->next;
      }else{
      pre=pre->next;
      }
      }
      return dummyHead->next;
      }
      };

注意:

1.其实这道题可以有两种方法去做,第一种是不适用虚拟头节点的,但是这种方法需要分类,一种是删除的节点是头节点的时候,第二种是其他元素,但是这样的话,代码不够简洁。所以采用了虚拟头节点的方式来做

2.C++中应该在用完dummyHead后,将其释放,但是这里我忘了

相关推荐
晴空闲雲1 小时前
数据结构与算法-线性表-线性表的应用
数据结构
爱coding的橙子2 小时前
每日算法刷题Day31 6.14:leetcode二分答案2道题,结束二分答案,开始枚举技巧,用时1h10min
算法·leetcode·职场和发展
wangjialelele2 小时前
双向链表——(有头双向循环链表)
数据结构·链表
梦境虽美,却不长2 小时前
数据结构 学习 链表 2025年6月14日08点01分
数据结构·学习·链表
无聊的小坏坏3 小时前
一文详解前缀和:从一维到二维的高效算法应用
数据结构·算法
梦境虽美,却不长3 小时前
数据结构 学习 图 2025年6月14日 12点57分
数据结构·学习·
houliabc3 小时前
【无标题】【2025年软考中级】第三章数据结构3.2 栈与队列
数据结构
蒙奇D索大3 小时前
【数据结构】图论最短路圣器:Floyd算法如何用双矩阵征服负权图?
数据结构·算法·矩阵·图论·图搜索算法
IC 见路不走5 小时前
LeetCode 第73题:矩阵置零
算法·leetcode·矩阵
黑听人6 小时前
【力扣 简单 C】141. 环形链表
c语言·开发语言·数据结构·算法·leetcode