Remove Duplicates from Unsorted List
removeDuplicatesOf(node, head)
if(node == node.next || node.next == head)
return
else if(node.value == node.next.value)
node.next = node.next.next
removeDuplicatesOf(node, head)
else
removeDuplicatesOf(node.next, head)
/**
* 本代码由九章算法编辑提供。版权所有,转发请注明出处。
* - 九章算法致力于帮助更多中国人找到好的工作,教师团队均来自硅谷和国内的一线大公司在职工程师。
* - 现有的面试培训课程包括:九章算法班,系统设计班,算法强化班,Java入门与基础算法班,Android 项目实战班,Big Data 项目实战班,
* - 更多详情请见官方网站:http://www.jiuzhang.com/?source=code
*/
/**
* Definition for ListNode
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
/**
* @param head: The first node of linked list.
* @return: head node
*/
public ListNode removeDuplicates(ListNode head) {
HashSet<Integer> hash = new HashSet<Integer>();
ListNode dummy = new ListNode(0);
dummy.next = head;
head = dummy;
while (head.next != null) {
if (hash.contains(head.next.val)) {
head.next = head.next.next;
} else {
hash.add(head.next.val);
head = head.next;
}
}
return dummy.next;
}
}
Last updated
Was this helpful?