Blog.

移除链表元素

Cover Image for 移除链表元素
Bernie
Bernie

203. 移除链表元素

leetcode 链接

思路:

1.使用 dummy 节点存储头节点,然后遍历链表.

2.如果再遍历判断当前节点的值等于 val,如相等则将当前节点的 next 指向下一个节点的 next.

3.然后将当前节点指向下一个节点,最后返回 dummy.next 即可。

typescript 解法

/**
 * Definition for singly-linked list.
 * class ListNode {
 *     val: number
 *     next: ListNode | null
 *     constructor(val?: number, next?: ListNode | null) {
 *         this.val = (val===undefined ? 0 : val)
 *         this.next = (next===undefined ? null : next)
 *     }
 * }
 */

function removeElements(head: ListNode | null, val: number): ListNode | null {
  const dummy = new ListNode(-1, head);
  let current = dummy;

  while (current) {
    while (current.next && current.next.val === val) {
      current.next = current.next.next;
    }
    current = current.next;
  }
  return dummy.next;
}

go 解法

func removeElements(head *ListNode, val int) *ListNode {
    dummy := &ListNode{
        Val: -1,
        Next: head,
    }
    current := dummy
    for current != nil {
        for current.Next != nil && current.Next.Val == val {
            current.Next = current.Next.Next
        }
        current = current.Next
    }

    return dummy.Next
}