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

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

https://oj.leetcode.com/problems/remove-duplicates-from-sorted-list-ii/

 

思路:需要一个dummy head辅助。

public class Solution {    public ListNode deleteDuplicates(ListNode head) {        ListNode newHead = new ListNode(-1);        newHead.next = head;        ListNode pre = newHead;        ListNode cur = head;        while (cur != null && cur.next != null) {            if (cur.val == cur.next.val) {                while (cur != null && cur.next != null && cur.val == cur.next.val) {                    cur = cur.next;                }                cur = cur.next;                pre.next = cur;            }            else {                pre = cur;                cur = cur.next;            }        }        return newHead.next;    }    public static void main(String[] args) {        ListNode head = ListUtils.makeList(1, 1, 2, 3, 3);        ListUtils.printList(head);        head = new Solution().deleteDuplicates(head);        ListUtils.printList(head);    }}
View Code