Remove Duplicates from Sorted List II

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.

 

 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         ListNode header = new ListNode(Integer.MAX_VALUE);

15         header.next = head;

16         ListNode cur = header, pre = header.next;

17         header.next = null;

18         while(pre != null){

19             ListNode tmp = pre;

20             while(pre != null && pre.val == tmp.val) pre = pre.next;

21             if(tmp.next == pre){

22                 cur.next = tmp;

23                 cur = cur.next;

24                 cur.next = null;

25             }

26         }

27         return header.next;

28     }

29 }

 

你可能感兴趣的:(remove)