Java教程

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

本文主要是介绍82. 删除排序链表中的重复元素 II,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除链表中所有存在数字重复情况的节点,只保留原始链表中 没有重复出现 的数字。

返回同样按升序排列的结果链表。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

class Solution {

    private boolean equal(ListNode n1, ListNode n2) {
        if (n1 == null && n2 == null) {
            return true;
        }

        if (n1 == null || n2 == null) {
            return false;
        }

        return n1.val == n2.val;
    }

    public ListNode deleteDuplicates(ListNode head) {
        if (head == null) {
            return head;
        }

        ListNode nextHead = new ListNode(), tail = nextHead;

        ListNode cur = head, pre = null;
        while (cur != null) {

            /**
             * 当前元素重复
             */
            while (cur != null && (equal(pre, cur) || equal(cur, cur.next))) {
                pre = cur;
                cur = cur.next;
            }

            tail.next = cur;
            tail = cur;
            cur = cur != null ? cur.next : null;
        }

        return nextHead.next;
    }
}

class ListNode {
    int val;
    ListNode next;

    ListNode() {
    }

    ListNode(int val) {
        this.val = val;
    }

    ListNode(int val, ListNode next) {
        this.val = val;
        this.next = next;
    }
}
这篇关于82. 删除排序链表中的重复元素 II的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!