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

给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次*。返回已排序的链表 。

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

方法:一次遍历

算法思路:

若当前cur的值与cur.next相同,那么将cur.next删除,否则,cur指向cur.next

代码实现:

class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null){
return null;
}
ListNode cur = head;
while(cur.next != null){
if(cur.val == cur.next.val){
cur.next = cur.next.next;
}else{
cur = cur.next;
}
}
return head;
}
}

复杂度分析:

时间复杂度:O(n)O(n),其中nn是链表的长度。

空间复杂度:O(1)O(1)

参考:

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