题目链接
题目描述
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例
示例1:
输入:head = [1,2,6,3,4,5,6], val = 6 输出:[1,2,3,4,5]
提示
- 列表中的节点数目在范围
[0, 10]内 1 <= Node.val <= 50-
思路
链表删除操作,为了方便,可以设置一个虚拟头结点。
注:如果使用C++,记得手动释放空间。题解
/*** 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) {ListNode dummyHead;dummyHead.next = head;ListNode* cur = &dummyHead;while (cur->next != nullptr) {if (cur->next->val == val) {ListNode* temp = cur->next;cur->next = cur->next->next;delete temp;} else {cur = cur->next;}}return dummyHead.next;}};
复杂度分析
时间复杂度:
- 空间复杂度:
