描述
真题描述:给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例
示例 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)