删除有序链表中重复出现的元素
删除有序链表中重复出现的元素:
描述
给出一个升序排序的链表,删除链表中的所有重复出现的元素,只保留原链表中只出现一次的元素。
例如:
给出的链表为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 };