链表-结点删除

124 阅读1分钟

描述

真题描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例

示例 1:

输入: 1->1->2 => 1->2

输入: 1->1->2->3->3 => 1->2->3

输入: 1->2-1->4 => 1->2->4

思路

删除找前面的节点

代码

function ListNode(val){
    this.val = val
    this.next = null
}

const p1Node1 = new ListNode(1)
const p1Node2 = new ListNode(2)
const p1Node3 = new ListNode(1)
const p1Node4 = new ListNode(4)

p1Node1.next = p1Node2
p1Node2.next = p1Node3
p1Node3.next = p1Node4



function deleteNode(p1) {
    const cache = {}
    let last = new ListNode() // 前一个结点
    let cur = p1
    
    while(cur !== null) {
        if(!cache[cur.val]) {
            last.next = cur.next
        } else {
            cache[cur.val] = true
            last = cur
        }
        cur = cur.next
    }
    
    return p1 
}

deleteNode(p1Node1)