Remove Linked List Elements (E)

题目

Remove all elements from a linked list of integers that have value val.

Example:

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。
Input:  1->2->6->3->4->5->6, val = 6
Output: 1->2->3->4->5

题意

将给定链表中所有含有指定值的结点删除。

思路

注意需要连续删除结点的情况。

代码实现

Java

/**
 * 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 dumb = new ListNode(0);
        dumb.next = head;
        ListNode pre = dumb;
        ListNode cur = head;

        while (cur != null) {
            if (cur.val == val) {
                pre.next = cur.next;
                cur = cur.next;
            } else {
                pre = pre.next;
                cur = cur.next;
            } 
        }

        return dumb.next;
    }
}

JavaScript

/**
 * @param {ListNode} head
 * @param {number} val
 * @return {ListNode}
 */
var removeElements = function (head, val) {
  let dummy = new ListNode(0, head)
  let pre = dummy
  let cur = head
  while (cur) {
    if (cur.val === val) {
      pre.next = cur.next
    } else {
      pre = cur
    }
    cur = cur.next
  }
  return dummy.next
}
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄