题目
给你一个链表的头节点 head 和一个整数 val ,请你删除链表中所有满足 Node.val == val 的节点,并返回 新的头节点 。
示例 1:
输入:head = [1,2,6,3,4,5,6], val = 6
输出:[1,2,3,4,5]
思路
一个简单的链表题目,可以练习java与链表使用
先设一个用于保存head的res,使用res来指向head;
然后设定pre和cur分别保存之前的值与当前的值;
然后判断cur的值是否和前一个相同,(1)如果相同,pre指向cur的下一个(2)如果不相同,pre指向cur,无论(1)(2),都需要进行cur = cur.next;
最后返回res.next
代码
/**
* 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) {
ListNode res = new ListNode(0);
res.next = head;
ListNode pre = res, cur = head;
while(cur != null){
if (cur.val == val) pre.next = cur.next;
else pre = cur;
cur = cur.next;
}
return res.next;
}
}