Time Limit Exceeded ( Remove Duplicates)

tasks

#1

Здравейте имам проблем с едно от решенията на задача Remove Duplicates. Само за първия Test case ми дава грешка " Time Limit Exceeded" . Има ли начин да преработя кода си, за да се впиша в зададеното време или да търся ново решение на задачата?

image

https://pastebin.com/m5kgNZ8W


#2

Привет, мисля че ето тази операция забавя програмата: disticted = list.stream().distinct().collect(Collectors.toList());
Вместо нея използвай един HashSet - в него може да се добавят само уникални елементи. С един for цикъл добави всеки елемент от колекцията ти, ако се повтаря HashSet-a автоматично няма да ти го приеме. И след това си изпринтирай самия HashSet по стандартния начин.


#3

Благодаря за идеята. Пробвах, но ми изкарва елементите разбъркано:

1

2


#4

Изключих, че може да се появи и този момент. Ако искаш може просто един по един да си ги добавяш в друга колекция, с една проверка дали вътре не се съдържа конкретния елемент.


#5

Смятах нещо подобо да пробвам, просто се чудех дали има начин да опитимизирам сегашния код. Благодаря отново :slight_smile:


#6

Здравей, може да пробваш да взимаш данните с BufferedReader, за да оптимизираш времете с малко.
Успех!


#7

Благодаря за съвета :slight_smile: Вече я пренаписах с for цикли и работи.


#8

Ако ти е интересно ето 2 решения със Stream API, 2то не работи в Judge, защото Judge не поддържа версия 11 от която идва lines() метода. https://pastebin.com/WwfyTq42


#9

Благодаря :slight_smile: Сега ще ги разгледам