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; } }