删除有序链表中重复出现的元素

删除有序链表中重复出现的元素:

描述

给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为1233445, 返回125.
给出的链表为11123, 返回23.
/*
 * 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
};

  

posted @ 2021-06-15 22:05  TangTaue  阅读(107)  评论(0编辑  收藏  举报