/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public static int lenLL(ListNode head){
int len = 0;
ListNode curr = head;
while(curr != null){
len++;
curr = curr.next;
}
return len;
}
public static ListNode deleteDuplicates(ListNode head) {
ListNode curr = head;
int lengthOfLL = lenLL(head);
int[] numFrequency = new int[lengthOfLL];
int pos = 0;
while (curr != null) {
int count = 0;
ListNode ptr2 = head;
while (ptr2 != null) {
if (curr.val == ptr2.val) {
ptr2 = ptr2.next;
count++;
}
else{
ptr2 = ptr2.next;
continue;
}
}
curr = curr.next;
numFrequency[pos] = count;
pos++;
}
// for (int i = 0; i < numFrequency.length; i++) {
// System.out.print(numFrequency[i] + " ");
// }
// System.out.println();
ListNode curr2 = head;
int pos2 = 0;
ListNode dummy = new ListNode();
ListNode d = dummy;
while(curr2 != null){
if(numFrequency[pos2] == 1){
ListNode temp = new ListNode(curr2.val);
d.next = temp;
d = d.next;
d.next = null;
curr2 = curr2.next;
pos2++;
}
else{
curr2 = curr2.next;
pos2++;
continue;
}
}
return dummy.next;
}
}