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
.
解题思路:
0 -> 1 -> 2 ->3->3->4->4->5
| | |
pre headpre head
首先value = headpre.val;
1、value != head.val,pre 赋值headpre,headpre,head往右平移;value 赋值headpre.val;
2、相等,value不变,删除headpre和head,headpre为pre,head右移一位;
public class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null) return head;
ListNode newhead = new ListNode(0);
newhead.next = head;
ListNode pre = newhead;
int value = head.val;
ListNode headpre = head;
head = head.next;
while(head != null){
if(head.val == value){
pre.next = head.next;
headpre = pre;
head = head.next;
}else{
pre = headpre;
headpre = head;
value = headpre.val;
head = head.next;
}
}
return newhead.next;
}
}