83
Given a sorted linked list, delete all duplicates such that each element appear only once.
Example 1:
Input: 1->1->2 Output: 1->2
Example 2:
Input: 1->1->2->3->3 Output: 1->2->3
82
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Example 1:
Input: 1->2->3->3->4->4->5 Output: 1->2->5
Example 2:
Input: 1->1->1->2->3 Output: 2->3
思路:
83是只能出现一次, 82是出现了重复 后必须删除。
83:弄一个dummy node, dummy.next =headl, cur = dummy;
然后进入while(){ int count =0; fast = cur;
while(cur.next.val = fast.next.val) count++; 如果count>1, 就cur.next = fast.next;, 如果不是就cur = fast
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null)return head;
ListNode dummy = new ListNode(0), cur =dummy;
dummy.next = head;
while(cur.next!=null){
ListNode fast = cur;
int count = 0;
while(fast.next!=null && fast.next.val == cur.next.val){
count++;
fast = fast.next;
}
if(count >1){
cur.next = fast.next;
fast.next = null;
}else cur = fast;
}
ListNode res = dummy.next;
//dummy.next = null;
return dummy.next;
}
}
82:
if(list.val = list.next.val){
list.next = list.next.next;
}
class Solution {
public ListNode deleteDuplicates(ListNode head) {
if(head == null || head.next == null) return head;
ListNode list = head;
while(list.next!=null){
if(list.val == list.next.val){
list.next = list.next.next;
}else{
list = list.next;
}
}
return head;
}
}