Given a sorted linked list, delete all nodes that have duplicate numbers, leaving only distinct numbers from the original list.
Example 1:
Input: 1->2->3->3->4->4->5 Output: 1->2->5
Example 2:
Input: 1->1->1->2->3 Output: 2->3
难度:medium
题目:给出一排序链表,删除所有重复结点,只保留原链表中不重复的结点。
思路:双指针遍历
Runtime: 0 ms, faster than 100.00% of Java online submissions for Remove Duplicates from Sorted List II.
Memory Usage: 37.8 MB, less than 0.94% of Java online submissions for Remove Duplicates from Sorted List II.
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode deleteDuplicates(ListNode head) { if (null == head) { return head; } ListNode dummyHead = new ListNode(0); dummyHead.next = head; ListNode prev = dummyHead, ptr = head; while (ptr != null && ptr.next != null) { if (ptr.val == ptr.next.val) { while (ptr.next != null && ptr.val == ptr.next.val) { ptr = ptr.next; } prev.next = ptr.next; ptr = prev; } prev = ptr; ptr = ptr.next; } return dummyHead.next; } }