删除有序链表中重复出现的元素
删除有序链表中重复出现的元素:
描述
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为1→2→3→3→4→4→5, 返回1→2→5.
给出的链表为1→1→1→2→3, 返回2→3.
例如:
给出的链表为1→2→3→3→4→4→5, 返回1→2→5.
给出的链表为1→1→1→2→3, 返回2→3.
/*
* function ListNode(x){
* this.val = x;
* this.next = null;
* }
*/
/**
*
* @param head ListNode类
* @return ListNode类
*/
function deleteDuplicates( head ) {
// write code here
var map = new Map();
var cur = head;
var pre = head;
while(cur !== null){
if(!map.has(cur.val)){
map.set(cur.val,1)
}else{
var count = map.get(cur.val);
count++;
map.set(cur.val,count);
}
cur = cur.next;
}
var newNode = new ListNode(-1);
var dummy = newNode;
while(pre !== null ){
if(map.get(pre.val) === 1){ //出现重复的值
var newnode = new ListNode(pre.val);
newNode.next = newnode;
newNode = newNode.next;
// pre = pre.next;
}
pre = pre.next;
}
return dummy.next;
}
module.exports = {
deleteDuplicates : deleteDuplicates
};

浙公网安备 33010602011771号