LeetCode-83. Remove Duplicates from Sorted List (Java)

xiaoxiao2021-02-28  73

Given a sorted linked list, delete all duplicates such that each element appear only once.

For example, Given 1->1->2, return 1->2. Given 1->1->2->3->3, return 1->2->3.

-----------------------------------------------------------------------------------------------------------------------------------------------

思路

最简单的一种方法就是利用set集合,在遍历节点的时候,判断set中是否有这个值,没有的话,将这个节点链接在

新的头结点上。

代码

public class Solution { public ListNode deleteDuplicates(ListNode head) { if(head == null) return null; HashSet<Integer> set = new HashSet<Integer>(); ListNode newHead = new ListNode(head.val); set.add(head.val); ListNode current = newHead; while(head != null){ if(!set.contains(head.val)){ set.add(head.val); ListNode node = new ListNode(head.val); current.next = node; current = node; } head = head.next; } return newHead; } } 还有一种不借助set的方法,这个方法的思路也很简单。

public class Solution { public ListNode deleteDuplicates(ListNode head) { ListNode cur = head; while (cur != null && cur.next != null) { if (cur.val == cur.next.val) { cur.next = cur.next.next; } else { cur = cur.next; } } return head; } }

转载请注明原文地址: https://www.6miu.com/read-57720.html

最新回复(0)