首页 > 代码库 > Remove Duplicates from Sorted List II

Remove Duplicates from Sorted List II

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         if(null == head || null == head.next)        //只有1个节点或者空时,直接返回头结点15             return head;16         ListNode temp = new ListNode(0);17         temp.next = head;18         head = temp;//加一个头结点,不放内容19         20         ListNode pre = head;21         ListNode behind = head.next;22         ListNode front = behind.next;23         24         while(null != front){25             if(behind.val == front.val){            //如果有相同的,删除掉26                 while(null != front && behind.val == front.val)27                     front = front.next;28                 if(null == front)29                     pre.next = null;30                 else{31                     pre.next = front;32                     behind = front;33                     front = front.next;34                     continue;35                 }36             }37             if(null != front){38                 front = front.next;39                 behind = behind.next;40                 pre = pre.next;41             }42         }43         return head.next;44     }45 }

 

Remove Duplicates from Sorted List II