给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为, 返回.
给出的链表为, 返回.
例如:
给出的链表为, 返回.
给出的链表为, 返回.
数据范围:链表长度 ,链表中的值满足
要求:空间复杂度 ,时间复杂度
进阶:空间复杂度 ,时间复杂度
function deleteDuplicates( head ) { let map = new Map() let p = head while(p){ if(!map.has(p.val)){ map.set(p.val,1) }else{ let tmp = map.get(p.val) tmp++ map.set(p.val,tmp) } p = p.next } let node = new ListNode(0) node.next = head let cur = node while(cur.next !== null){ if(map.get(cur.next.val) !== 1){ cur.next = cur.next.next }else{ cur = cur.next } } return node.next }v
function deleteDuplicates( head ) { // write code here let newHead = null let newPre = null let cur = head let preVal = null while (cur) { const next = cur.next if (cur.val !== preVal && (!next || next.val !== cur.val)) { const node = { val: cur.val, next: null } if (newPre === null) { newHead = node newPre = node } else { newPre.next = node newPre = node } } preVal = cur.val cur = next } return newHead }