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

[leetcode]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.

算法思路:

跟[leetcode]Remove Duplicates from Sorted List差不许多,只是加一个前驱节点和标记变量,以便删除重复节点。

 1 public class Solution { 2     public ListNode deleteDuplicates(ListNode head) { 3         if(head == null || head.next == null) return head; 4         ListNode hhead = new ListNode(0); 5         hhead.next = head; 6         ListNode one = hhead; 7         ListNode two = head; 8         boolean tag = false; 9         while(two != null){10             tag = false;11             while(two.next != null && two.next.val == two.val) {12                 two = two.next;13                 tag = true;14             }15             if(tag){16                 two = two.next;17                 one.next = two;18             }else{19                 one = two; 20                 two = two.next;21             }22         }23         return hhead.next;24     }25 }