slowrunner and fastrunner trick
1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * int val; 5 * ListNode next; 6 * ListNode(int x) { 7 * val = x; 8 * next = null; 9 * } 10 * } 11 */ 12 public class Solution { 13 public ListNode deleteDuplicates(ListNode head) { 14 // IMPORTANT: Please reset any member data you declared, as 15 // the same Solution instance will be reused for each test case. 16 ListNode fakehead = new ListNode(0); 17 fakehead.next = head; 18 ListNode runner = fakehead; 19 while(runner.next != null){ 20 if(runner.val == runner.next.val && runner != fakehead) 21 runner.next = runner.next.next; 22 else 23 runner = runner.next; 24 } 25 return fakehead.next; 26 } 27 }