时间: 2019-12-11
题目地址: https://leetcode.com/problems/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.
给定一个已排序的链表,请删除所有具有重复编号的节点,只保留原始列表中不同的编号。
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
Solution:
public ListNode deleteDuplicates(ListNode head) {
if (null == head || null == head.next) {
return head;
}
ListNode sentinel = new ListNode(-1);
sentinel.next = head;
ListNode current = head.next;
ListNode prev = sentinel;
while (null != current) {
if (prev.next.val == current.val) {
current = current.next;
continue;
}
if (prev.next.next == current) {
prev.next = prev.next;
prev = prev.next;
} else {
prev.next = current;
}
current = current.next;
}
if (null != prev.next.next) {
prev.next = null;
}
return sentinel.next;
}
Runtime: 0 ms, faster than 100.00% of Java online submissions for Remove Duplicates from Sorted List II.
Memory Usage: 36 MB, less than 100.00% of Java online submissions for Remove Duplicates from Sorted List II.