Софтуерно Инженерство
Loading...
+ Нов въпрос
IvanSpiridonov avatar IvanSpiridonov 17 Точки

Problem 3. Maximum Element - Time Limit Exceeded

Колежки и колеги,

На въпросната трета задача от Exercises: Stacks and Queues е с Allowed working time: 0.300 sec в judge

Аз правих какво ли не и не мога да ги докарам под Time: 0.454 

1. Пробвах с if-ове
2. Пробвах да сменя интовете с байтове
3. Пробвах резулата да не е стринг, а да е StringBuilder

,но judge (този Юда :) продължава да ме реже на последните два теста с Time Limit грешка.
Моля ударете едно рамо, за да разбера къде ми изчезват милите милисекунди?

Кода е отдолу, варианта с иф е закоментиран:

https://github.com/Aborigenius/Softuni/blob/master/C%23%20Advanced/StacksAndQueuesEx/Maximum%20Element/Program.cs

0
C# Advanced
butoff avatar butoff 33 Точки
Best Answer

Не трябва да ползваш LINQ метода MAX. Аз използвам втори stack, където добавям  максималната стойност в момента при всяка Push команда. При команда Pop правиш Pop на основния stack и също на помощния (така винаги Peek на помощния  stack  ще ти даде Max стойност).

 if (trackMax.Count == 0)        // -- var trackMax = new Stack<int>();
                    {
                        trackMax.Push(number);
                    }
                    else
                    {
                        if (trackMax.Peek() < number)
                        {
                            trackMax.Push(number);
                        }
                        else
                        {
                            trackMax.Push(trackMax.Peek());
                        }
                    }

 

0
fantom4e avatar fantom4e 24 Точки

Здравей.
.Max() функцията е бавна, там ти взима много от времето. Пробвай се по някакъв начин да запазваш най - голямите елементи. Във видеото от упражненията видях че ползват още един стак за голямите елементи.

Успех!

0
IvanSpiridonov avatar IvanSpiridonov 17 Точки

Благодаря на всички за отговорите!

Странно или не с двата стека си минава в judge.

0