存在一个按升序排列的链表,给你这个链表的头节点 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; } }