18.删除排序链表中的重复元素-LeetCode-Java

    技术2022-07-10  132

    给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。 示例 1: 输入: 1->1->2 输出: 1->2 示例 2: 输入: 1->1->2->3->3 输出: 1->2->3 // 方法一:这里使用set判别是否是重复元素,增加了额外的时间/空间开销 import java.util.HashSet; import java.util.Set; class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null) return null; ListNode prior = head; Set set = new HashSet(); set.add(prior.val); while (prior.next != null) { if (set.contains(prior.next.val)) { ListNode free = prior.next; prior.next = free.next; free = null; } else { set.add(prior.next.val); prior = prior.next; } } return head; } } // 方法二:由题目可知是排序链表,比较当前值与后一个元素值是否相同即可判别是否重复 class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == null) return null; ListNode prior = head; while (prior != null && prior.next != null) { if (prior.val == prior.next.val) { ListNode free = prior.next; prior.next = free.next; free = null; } else { prior = prior.next; } } return head; } }
    Processed: 0.010, SQL: 9