83、删除排序链表中的重复元素 | JS-链表

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次 。

返回同样按升序排列的结果链表。

 

示例 1:

输入:head = [1,1,2]
输出:[1,2]


示例 2:

输入:head = [1,1,2,3,3]
输出:[1,2,3]
 

提示:

  • 链表中节点数目在范围 [0, 300] 内
  • -100 <= Node.val <= 100
  • 题目数据保证链表已经按升序排列

思路:因为链表有序,所以重复元素一定相邻,遍历链表如果当前元素与下个元素相同就删除下个元素值,遍历结束之后返回原链表的头部。

 1 /**
 2  * Definition for singly-linked list.
 3  * function ListNode(val, next) {
 4  *     this.val = (val===undefined ? 0 : val)
 5  *     this.next = (next===undefined ? null : next)
 6  * }
 7  */
 8 /**
 9  * @param {ListNode} head
10  * @return {ListNode}
11  */
12 var deleteDuplicates = function(head) {
13     let p = head;
14     while (p && p.next) {  //当前元素和下个元素都有值
15         if(p.val === p.next.val) {
16             p.next = p.next.next;
17         } else {  //如果当前的值和下一个值相同,就不往后移动,直接删除后面哪一个即可,因为如果第三个值和第一个值相同还要再比一遍
18             p = p.next;
19         }
20     }
21     return head; //删除完成之后,只需要返回原链表的头部
22 };
原文地址:https://www.cnblogs.com/oaoa/p/14825552.html