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

C# Advanced (1. Basic Stack Operations)

Здравейте, колеги! Някой има ли представа защо един от тестовете не минава и дава 80/100 точки? От 1 час мъча всякакви входове и output-a e верен, но Judge ми се заяжда за един от тестовете. Благодаря предварително на всички отзовали се за отделеното време!

Pastebin -> https://pastebin.com/cmXVJhW6

 

0
C# Advanced 21/11/2021 17:56:26
icowwww avatar icowwww 1676 Точки

Здравей,

Когато търсиш дали елемента го има или проверяваш дали е с най-малко стойност:

 if (stackOfNumbers.Peek() <= smallestNumberInStack)
                        {
                            smallestNumberInStack = stackOfNumbers.Peek();
                            stackOfNumbers.Pop();
                            i--;
                        }

Само в случай, че елемент равен или по-малък от smallestNumberInStack махаш елемента и намаляваш итератора.

Обаче ако елемента не е такъв не го махаш. Съответно при следваща итерация проверките ти с Peek са невалидни, защото първия елемент си е все същия.

Затова винаги премахвай елемента.

https://pastebin.com/jhhxA43m

 

От друга страна има методи да намериш дали елемента съществува и да намериш най-малкия елемент:

stackOfNumbers.Contains(commands[2]);

stackOfNumbers.Min();

0
24/11/2021 19:58:36