0
点赞
收藏
分享

微信扫一扫

LeetCode-082-删除排序链表中的重复元素 II

深夜瞎琢磨 2021-09-28 阅读 70
LeetCode

删除排序链表中的重复元素 II

解法一:链表遍历
public class LeetCode_082 {
    public static ListNode deleteDuplicates(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = new ListNode(-1);
        ListNode last = newHead, cur = head;
        while (cur != null) {
            // 当前节点是否是重复的标识
            boolean isRepeated = false;
            ListNode next = cur.next;
            // 找到下一个跟cur节点的数字不同的节点,并且判断当前节点是否是重复的
            while (next != null && next.val == cur.val) {
                isRepeated = true;
                next = next.next;
            }
            if (isRepeated) {
                // 如果当前节点是重复的,则跳过这个重复节点
                cur = next;
            } else {
                // 如果当前节点不是重复的,则作为last的下一个节点
                last.next = new ListNode(cur.val);
                last = last.next;
                cur = next;
            }
        }
        return newHead.next;
    }

    public static void main(String[] args) {
        ListNode head = new ListNode(1);
        head.next = new ListNode(2);
        head.next.next = new ListNode(2);

        ListNode result = deleteDuplicates(head);
        while (result != null) {
            System.out.print(result.val + " ");
            result = result.next;
        }
    }
}
举报

相关推荐

0 条评论