Професионална програма
Loading...
Val3ntinV avatar Val3ntinV 21 Точки

ForceBook 90 точки! Java

Последният тест гърми.Търсих, но така и ненамерих грешката.Все пак мисля ,че е при "->" тази проверка ..

Ще се радвам ако някой може да помогне !

Код: https://pastebin.com/mgE8X5Ha

Тагове:
0
Fundamentals Module
Vl.Metodiev avatar Vl.Metodiev 58 Точки
Best Answer

Здравей колега

 

Опитах се да проследя решението ти, но се омотах тотално в него. Създал си много списъци и си извършил много действия, които не са необходими. Това което направих е, запазвайки логиката на твоето решение, да съкратя значително написаният код. Тествах новото решение - минава в Judge с 100/100. По-долу ще обясня подробно какво съм променил или съкратил. Ако това те устройва добре, ако ли не, някой по-умел от мен ще трябва да ти отговори, какво точно се "чупи" в твоето решение.

 

Това е оптимизираният от мен код:

https://pastebin.com/wK5sCxSD

 

Така, първо промених мапът от HashMap на TreeMap, защото в него ключовете са сортирани. Съществените промени, които направих са в switch - конструкцията. Използвам цикъл, за да премина през мапът и да проверя дали името на дадения играч съществува. В case "|" просто отбелязвам true (ако съществува), в case "->" директно премахвам името. След което и в двата кейса изпалзвам if - else if конструкция, за да проверя дали съответната страна съществува, ако не съществува добавям страната в ключовете, и създавам нов new ArrayList<>(), който съответства на този ключ, и в който ще се съхраняват имената. След това просто добавям име. Мисля, че оптимизираният код ще ти свърши работа.

 

Успех!

0
11/11/2019 00:16:43
Val3ntinV avatar Val3ntinV 21 Точки

Благодаря за помощта !! Прав си за решението , че е малко уплетено , но в момента ги свиквам тези масиви , че попринцип са си труднички !!

0
SvilenVelikov avatar SvilenVelikov 1 Точки

Здравей Vl.Metodiev,

Може ли да обясниш защо правиш двойна проверка дали User е наличен.

С двойна проверка работи де. Но не мога да си го обясня защо.

for (Map.Entry<String, List<String>> current : webSide.entrySet()) {
                        if (current.getValue().contains(user)) {
                            webSide.get(current.getKey()).remove(user);
                            break;
                        }
                    }

else if (webSide.containsKey(whichSide) && !webSide.get(whichSide).contains(user))

 

0