Skip to content
本页目录

0203-移除链表元素

https://leetcode.cn/problems/remove-linked-list-elements

给你一个链表的头节点 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, 10^4] 内
1 <= Node.val <= 50
0 <= val <= 50

思路

创建一个 dummyHead 指向链表头部 使用一个 cur 指针指向链表头部,如果 cur.next.val == val 执行删除操作 (cur.next = cur.next.next) 否则循环下一个节点 cur = cur.next

csharp
public class Solution {
    public ListNode RemoveElements(ListNode head, int val) {
    	ListNode dummyHead = new ListNode();
    	dummyHead.next = head;
    	ListNode cur = dummyHead;
    	while(cur != null){
    		//如果下个节点的值 == val,则删除下个节点
    		if(cur.next != null && cur.next.val == val){
    			cur.next = cur.next.next;
    		}
    		else{
                cur = cur.next;
            }
    	}
    	return dummyHead.next;
    }
}

Released under the MIT License.