题目链接
https://leetcode.cn/problems/remove-linked-list-elements/
题解
题解一(Java)
class Solution {
public ListNode removeElements(ListNode head, int val) {
// 存在换头嫌疑,不能保证头要不要删除
while (head != null && head.val == val)
head = head.next;
if (head == null)
return null;
// 保存新头
ListNode newHead = head;
// 保存前一个值不为val的链表节点
ListNode pre = newHead;
head = head == null ? null : head.next;
// 遍历链表
while (head != null) {
// 如果当前节点的值和val相等,pre指向当前节点的下一个节点
if (head.val == val) {
pre.next = head.next;
} else {
// 如果当前节点的值不是val,当前节点就是pre节点
pre = head;
}
// 迭代
head = head.next;
}
return newHead;
}
}