203. 移除链表元素
链表 元素 移除
2023-09-27 14:26:25 时间
给你一个链表的头节点 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) {
ListNode* l = new ListNode(-1);
ListNode* lhead = l;
while (head) {
if (head->val != val) {
lhead->next = head;
lhead = lhead->next;
}
head = head->next;
}
if (lhead->next && lhead->next->val == val) {
lhead->next = nullptr;
}
return l->next;
}
};
/**
* 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* l = new ListNode(-1, head);
ListNode* lhead = l;
while (lhead->next) {
if (lhead->next->val == val) {
lhead->next = lhead->next->next;
} else {
lhead = lhead->next;
}
}
return l->next;
}
};
/**
* 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) return head;
head->next = removeElements(head->next, val);
return head->val == val ? head->next : head;
}
};
相关文章
- 大杂烩 -- 查找单向链表倒数第m个元素
- 【PAT乙级】1075 链表元素分类 (25 分)
- 【数据结构】链表OJ题(建议收藏!!!)
- 剑指 Offer 24. 反转链表
- 剑指 Offer 06. 从尾到头打印链表
- 求链表的倒数第m个元素
- 删除链表的倒数第n个节点
- LeetCode082之删除排序链表中的重复元素II(相关话题:链表)
- 64、【链表】leetcode——203. 移除链表元素(C++版本)
- 【leetcode】日积月累,每日一题--203. 移除链表元素(DayDayUp 12)
- [LintCode] Remove Linked List Elements 移除链表元素
- [LeetCode] Remove Linked List Elements 移除链表元素
- 自引用结构--之链表指定值删除元素
- leetcode算法237.删除链表中的节点