【LeetCode每日一题】203. 移除链表元素
题目:
给你一个链表的头节点 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
输出:[]
题解:
直接递归
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
if (!head) return head;
head->next = removeElements(head->next, val);
if (head->val == val) {
return head->next;
}
return head;
}
};
使用dummyHead
public:
ListNode* removeElements(ListNode* head, int val) {
ListNode* dummyHead = new ListNode(-1), *p = dummyHead, *cur = head;
dummyHead->next = head;
while (cur) {
if (cur->val == val) {
ListNode* tail = cur->next;
delete cur;
p->next = tail;
cur = tail;
} else {
p = cur;
cur = cur->next;
}
}
ListNode* newHead = dummyHead->next;
delete dummyHead;
return newHead;
}
};
本节完~
【LeetCode每日一题】1744. 你能在你最喜欢的那天吃到你最喜欢的糖果吗?
【LeetCode每日一题】1787. 使所有区间的异或结果为零