Total Accepted: 8726 Total Submissions: 35450
Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
For example,
Given 1->2->3->3->4->4->5
, return 1->2->5
.
Given 1->1->1->2->3
, return 2->3
.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { * val = x; * next = null; * } * } */ public class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null || head.next == null) return head; ListNode newHead = new ListNode(head.val+1); ListNode hi = head; ListNode lo = newHead; int temp = head.val+1; lo.next = head; while (hi.next != null) { if (hi.val != hi.next.val) { lo = hi; hi = hi.next; continue; } // skip all elems equals to [hi] while (hi.next.val == hi.val) { hi.next = hi.next.next; // return at the end of list if (hi.next == null) { lo.next = null; return newHead.next; } } // set new hi lo.next = hi.next; hi = lo.next; } return newHead.next; } }