力扣203. 移除链表元素
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例
代码实现
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
if(head==null){
return head;
}
ListNode dummy=new ListNode(-1,head);
ListNode pre = dummy;
ListNode cur = head;
while(cur!=null){
if(cur.val==val){
pre.next=cur.next;
}else{
pre=cur;
}
cur=cur.next;
}
return dummy.next;
}
}
总结收获
从我目前的立场看,链表的题目,但凡涉及删除节点这个操作(这个操作可能作为单独的考点,也可以作为复杂题目的一小步)的题目,都统一设置虚拟化头节点会很方便,因为这样原链表的所有节点就都可以按照统一的方式进行移除了。