原题
删除链表中等于给定值 val 的所有节点。
示例:
输入: 1->2->6->3->4->5->6, val = 6
输出: 1->2->3->4->5
解法
思想
pre指针停留在val出现之前,cur指针越过val,让pre的next指向cur。
为了处理出现头节点被删除的特殊情况,增加一个虚拟头节点。
代码
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode removeElements(ListNode head, int val) {
ListNode newHead = new ListNode(0);
newHead.next = head;
ListNode cur = head;
ListNode pre = newHead;
while(cur!=null){
if(cur.val!=val){
pre.next = cur;
pre = cur;
}
cur = cur.next;
}
pre.next = cur;
return newHead.next;
}
}
原创文章,作者:彭晨涛,如若转载,请注明出处:https://www.codetool.top/article/leetcode203-%e7%a7%bb%e9%99%a4%e9%93%be%e8%a1%a8%e5%85%83%e7%b4%a0/