LinkList3

题目描述[原题链接][https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list/]

给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。

示例 1:

输入: 1->1->2
输出: 1->2

示例 2:

输入: 1->1->2->3->3
输出: 1->2->3

算法描述

​ 思路很简单,就是判断当前的节点val是否和下一个节点的val相等,相等就删除后面的节点,直到链表尾部,删除链表的所有重复值,返回头节点head;

C++代码

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;
if(head->next==NULL)return head;
ListNode *f;
f=head;
while(f->next){
if(f->val==f->next->val)
{
if(f->next->next)f->next=f->next->next;
else {f->next=NULL;break;}
}
else if(f->val!=f->next->val)
f=f->next;
}
return head;
}
};

Java代码

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