您的位置:首页 > 其它

算法系列——Remove Duplicates from Sorted List II

2017-08-10 15:02 197 查看

题目描述

Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.

For example,

Given 1->2->3->3->4->4->5, return 1->2->5.

Given 1->1->1->2->3, return 2->3.

解题思路

引入虚拟头结点来辅助,跳过值重复的结点。

程序实现

public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head==null||head.next==null)
return head;
ListNode dummyHead=new ListNode(-1);
ListNode p=dummyHead;
p.next=head;
ListNode cur=head;
while(cur!=null){
//跳过重复元素
while(cur.next!=null&&cur.next.val==cur.val)
cur=cur.next;
if(p.next==cur)
p=p.next;
else
p.next=cur.next;
cur=cur.next;
}
return dummyHead.next;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: