[leetcode note] Remove Duplicates from Sorted List II

时间: 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.

欢迎关注公众号(代码如诗):
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值