删除排序链表的重复元素

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

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

示例 1:

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

这是一道比较简单的题目了,但是一开始很自然的想着写递归,其实不用

最后发现和答案内存消耗和执行用时其实差不多

1
2
3
4
5
6
7
8
9
10
11
12
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null){
return head;
}
while(head.next!=null && head.next.val == head.val ){
head.next=head.next.next;
}
deleteDuplicates(head.next);
return head;
}
}

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if (head == null) {
return head;
}

ListNode cur = head;
while (cur.next != null) {
if (cur.val == cur.next.val) {
cur.next = cur.next.next;
} else {
cur = cur.next;
}
}

return head;
}
}