LeetCode-83-删除排序链表中的重复元素

看一百遍美女,美女也不一定是你的。但你刷一百遍算法,知识就是你的了~~

谁能九层台,不用累土起!

题目地址

题目

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

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

示例 1:

image.png

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

示例 2:

image.png

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

提示:

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

解题思路

  • 因为链表是有序的,所以重复的元素一定是相连的
  • 我们只需要比较相邻的两个节点的值是否相等
  • 如果相等,则左节点指向右节点的后置节点完成删除

解题代码

1
2
3
4
5
6
7
8
9
10
11
12
var deleteDuplicates = function(head) {
if(!head) return head
let cur = head
while(cur.next){
if(cur.val == cur.next.val){
cur.next = cur.next.next
}else{
cur = cur.next
}
}
return head
};
文章作者: Joker
文章链接: https://qytayh.github.io/2021/12/LeetCode-83-%E5%88%A0%E9%99%A4%E6%8E%92%E5%BA%8F%E9%93%BE%E8%A1%A8%E4%B8%AD%E7%9A%84%E9%87%8D%E5%A4%8D%E5%85%83%E7%B4%A0/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Joker's Blog