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
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.