一、题目描述
给定一个已排序的链表的头 head
, 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。
二、解题思路过程
/**
* Definition for singly-linked list.
* function ListNode(val, next) {
* this.val = (val===undefined ? 0 : val)
* this.next = (next===undefined ? null : next)
* }
*/
/**
* @param {ListNode} head
* @return {ListNode}
*/
var deleteDuplicates = function(head) {
// 如果链表头不存在,直接返回链表头
if(!head){
return head;
}
// 创建一个指针,指向链表头
var p = head;
// 当指针没有指向链表末尾时,执行循环
while(p.next){
// 如果指针当前值和下一个值相等
if(p.val===p.next.val){
// 删除指针的下一项
p.next=p.next.next;
}else{
// 否则指针后移
p=p.next;
}
}
return head;
};
三、复杂度分析
时间复杂度:,n为链表最大长度
空间复杂度:,使用的额外空间复杂度为常数。
四、题目来源
来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/remove-duplicates-from-sorted-list