package com.interview.books.leetcodeoj; import com.interview.leetcode.utils.ListNode; /** * Created_By: stefanie * Date: 14-12-23 * Time: 下午9:06 */ public class LOJ82_RemoveDuplicateFromSortedListII { //use three pointer: prev, front and back. //while(back != null && back.val == front.val) back = back.next; //if(front.next == back) prev.next = front; prev = prev.next; //set prev.next = null at the end. public ListNode deleteDuplicates(ListNode head) { ListNode dummy = new ListNode(0); dummy.next = head; ListNode prev = dummy; ListNode front = head; ListNode back = head; while(front != null){ back = front.next; while(back != null && back.val == front.val) back = back.next; if(front.next == back){ prev.next = front; prev = prev.next; } front = back; } prev.next = front; return dummy.next; } }