public ListNode deleteDuplicates(ListNode head) {
    	
    	if(null == head || head.next == null) return head;
    	
        ListNode current  = new ListNode(0);
        current.next = head;
        ListNode result = current;
        ListNode normal = current.next;
        ListNode compared = normal.next;
        
        boolean isDuplicated = false;
        
        while(null != compared) {
        	if(normal.val == compared.val) {
        		current.next = null;
        		isDuplicated = true;
        	}else {
        		if(isDuplicated) {
        			current.next = compared;
        			normal = compared;
        			isDuplicated = false;
        		}else {
        			current = normal;
        			normal = current.next;
        		}
        	}
        	
        	compared = compared.next;
        }
        
        return result.next;
    }