删除排序链表中的重复元素
题目描述
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
示例 2:
输入: 1->1->2->3->3
输出: 1->2->3
思路分析
通过双指针,遍历整个链表。指针p指向最近一个不重复的元素,指针q寻找下一个不重复的元素。代码如下:
public static ListNode deleteDuplicates(ListNode head) {
if (head==null||head.next==null)return head;
ListNode p=head,q=p.next;
while (q!=null){
while (q!=null&&q.val==p.val){
q=q.next;
}
if (q==null){
p.next=null;
return head;
}else {
p.next=q;
p=q;
q=p.next;
}
}
return head;
}