82. Remove Duplicates from Sorted List II

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode deleteDuplicates(ListNode head) {
        ListNode preHead = new ListNode(0, head);
        ListNode slow = preHead;
        ListNode fast = head;
        
        while(fast!=null){
            if(fast.next!=null && fast.val!=fast.next.val || fast.next==null){
                slow.next = fast;
                slow=fast;
                fast = fast.next;
            }else{
                // fast.next != null && fast.val == fast.next.val
                int val = fast.val;
                while(fast!=null && fast.val==val){
                    fast=fast.next;
                }
            }
        }
        slow.next=null;
        return preHead.next;
    }
}

Last updated