给定一个排序链表,删除所有含有重复数字的节点,只保留原始链表中 没有重复出现 的数字。
示例 1:
输入: 1->2->3->3->4->4->5
输出: 1->2->5
解决:
public ListNode deleteDuplicates(ListNode head) {
if(head==null || head.next==null) return head;
ListNode node=new ListNode(-1);//防止头结点重复
node.next=head;
ListNode pre=head;
ListNode flag=node;
while(pre!=null && pre.next!=null){
if(pre.val==pre.next.val){
int val=pre.val;
while(pre!=null && pre.val==val){
pre=pre.next;
}
flag.next=pre;
}else{
flag=pre;
pre=pre.next;
}
}
return node.next;
}
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。
示例 1:
输入: 1->1->2
输出: 1->2
解决:
public ListNode deleteDuplicates(ListNode head) {
ListNode flag=head;
while(flag!=null && flag.next!=null){
if(flag.val==flag.next.val){
flag.next=flag.next.next;
}else{
flag=flag.next;
}
}
return head;
}