存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。
返回同样按升序排列的结果链表。
示例 1:
输入:head = [1,1,1,2,3]
输出:[2,3]
提示:
链表中节点数目在范围 [0, 300] 内
-100 <= Node.val <= 100
题目数据保证链表已经按升序排列
代码:
public ListNode deleteDuplicates(ListNode head) {
ListNode p=head,pfist=head;
int i=1;
if(head==null||head.next==null) {
return head;
}
while(p!=null&&p.next!=null) {
if (p.val==p.next.val) {
int a=p.val;
while(p!=null) {
if(p.val==a) {
p=p.next;
}else{
break;
}
}
if(i==1) {
pfist=head=p;
}
}else {
if(i==1) {
pfist=head=p;
i=2;
}else{
pfist.next=p;
pfist=p;
}
p=p.next;
pfist.next=null;
}
}
if(p!=null) {
if(i==1){
return p;
}
pfist.next=p;
}
return head;
}