Вы не можете использовать квадрат root, потому что, когда вы хотите удалить дубликаты из списка, вы должны проверить весь список. Метод квадрата root используется для поиска в отсортированном списке. Но на ваш вопрос, можете ли вы улучшить время выполнения для этого вашего кода в O (n ^ 2), но если вы измените свой код на использование хеш-таблицы, вы можете сделать это O (n).
import java. util.HashSet;
publi c class removeDuplicates
{stati c class class
{int val; узел следующий;
public node(int val)
{
this.val = val;
}
}
/* Function to remove duplicates from a
unsorted linked list */
static void removeDuplicate(node head)
{
// Hash to store seen values
HashSet<Integer> hs = new HashSet<>();
/* Pick elements one by one */
node current = head;
node prev = null;
while (current != null)
{
int curval = current.val;
// If current value is seen before
if (hs.contains(curval)) {
prev.next = current.next;
} else {
hs.add(curval);
prev = current;
}
current = current.next;
}
}
/* Function to print nodes in a given linked list */
static void printList(node head)
{
while (head != null)
{
System.out.print(head.val + " ");
head = head.next;
}
}
Надеюсь, это поможет вам.