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后,将其释放,但是这里我忘了

相关推荐
指尖动听知识库2 小时前
华为2024嵌入式研发面试题
数据结构·算法·华为
m0_675988234 小时前
Leetcode2270:分割数组的方案数
数据结构·算法·leetcode·python3
pursuit_csdn4 小时前
LeetCode 2657. Find the Prefix Common Array of Two Arrays
算法·leetcode
xiao--xin4 小时前
LeetCode100之搜索二维矩阵(46)--Java
java·算法·leetcode·二分查找
YiHanXii5 小时前
List 接口的实现类
数据结构·list
涔溪5 小时前
JS二叉树是什么?二叉树的特性
java·javascript·数据结构
2403_875180956 小时前
一键掌握多平台短视频矩阵营销/源码部署
java·前端·数据结构·线性代数·矩阵·php
.Vcoistnt7 小时前
Codeforces Round 976 (Div. 2) and Divide By Zero 9.0(A-E)
数据结构·c++·算法·贪心算法·动态规划·图论
pursuit_csdn7 小时前
LeetCode 916. Word Subsets
算法·leetcode·word
TU.路7 小时前
leetcode 24. 两两交换链表中的节点
算法·leetcode·链表