[CrackCode] 2.1 Remove duplicates from an unsorted linked list

来源:互联网 发布:js 获取cookie的值 编辑:程序博客网 时间:2024/05/21 14:01

Write code to remove duplicates from an unsorted linked listFOLLOW UP

How would you solve this problem if a temporary buffer is not allowed? 

==========

Analysis:

If extra space allowed, use hash table as buffer to detect duplicate node value O(n).

If extra space not allowed, use nested loops, compare all the node pairs O(n^2).

public class Answer {public static void solution(LinkedListNode head){LinkedListNode previous = null;Hashtable table = new Hashtable();while(head.next != null){if(table.containsKey(head.data)) previous.next = head.next;else{previous = head;table.put(head.data, true);}head = head.next;}}public static void solution2(LinkedListNode head){while(head.next!=null){LinkedListNode pointer = head;while (pointer.next != null) {if (head.data == pointer.next.data) {pointer.next = pointer.next.next;} else pointer = pointer.next;}head = head.next;}}public static void main(String[] args) {LinkedListNode head = AssortedMethods.randomLinkedList(10, 0, 10);System.out.println(head.printForward());solution2(head);System.out.println(head.printForward());}}


0 0
原创粉丝点击