(Easy) Лимонад Изменить LeetCode

Описание:

На лимонада стенде каждый расходы лимонад $5

Клиенты стоят в очереди , чтобы купить у вас, и заказать его по времени (в порядке , предусмотренном bills).

Каждый клиент будет покупать только один лимонад и оплатить либо $5, $10или $20счет. Вы должны обеспечить правильное изменение к каждому клиенту, так что чистая сделка является то , что клиент платит $ 5.

Обратите внимание, что у вас нет каких-либо изменений в руке на первом.

Возвращение true тогда и только тогда , когда вы можете предоставить каждый клиент с правильными изменениями.

 

Пример 1:

Входные данные : [5,5,5,10,20]
 Вывод: верно
 Объяснение: 
Из первых 3 клиентов, мы собираем три $ 5 счета в порядке. 
С четвертого клиента, мы собираем счет $ 10 и вернуть в размере $ 5. 
С пятого клиента, мы даем счет $ 10 и счет 5 $. 
Поскольку все клиенты получили правильное изменение, мы выводим истинный.

Пример 2:

Входные данные : [5,5,10]
 Выход: правда

Пример 3:

Входные данные : [10,10]
 Выход: ложь

Пример 4:

Входные данные : [5,5,10,10,20]
 Выход: ложь
 Объяснение: 
Из первых двух клиентов в порядке, мы собираем два $ 5 счетов. 
В течение следующих двух клиентов в порядке, мы собираем счет $ 10 и вернуть купюру $ 5. 
Для последнего клиента, мы не можем дать изменение $ 15 назад , потому что у нас есть только два $ 10 счета. 
Так как не каждый клиент получил правильное изменение, ответ является ложным.

 

Замечания:

  • 0 <= bills.length <= 10000
  • bills[i] будет либо  5, 10или 20.

 

 

Решение:

класс Решение {
     общественного  логический lemonadeChange ( ИНТ [] счета) { 
        
        Stack <Integer> пять = новый Stack <Integer> (); 
        
        Stack <Integer> десять = новый Stack <Integer> (); 
        
        Stack <Integer> двадцать = новый Stack <Integer> (); 
        
        
        для ( INT = 0; я <bills.length; я ++ ) { 
            
            если (счета [я] == 5 ) { 
                
                five.push ( 5 );    
            } 
            
            Иначе ,  если (счета [I] == 10 ) { 
                
                если(five.size () <1 ) { 
                    
                    вернуться  ложным ; 
                } 
                Иначе { 
                    
                    five.pop (); 
                    
                    ten.push ( 10 ); 
                } 
            } 
            
            Еще { 
                
                если (five.size () <1 ) {
                     вернуться  ложным ; 
                } 
                
                Иначе ,  если (ten.size () <1 && five.size () <3 ) {
                     вернуться  ложным ; 
                } 
                
                Иначе {
                     если (ten.size ()> = 1 ) {
                        ten.pop (); 
                        
                        twenty.push ( 20 ); 
                        
                        five.pop (); 
                    } 
                    
                    Иначе ,  если (ten.size () <1 ) { 
                        
                        five.pop (); 
                        five.pop (); 
                        five.pop (); 
                        twenty.push ( 20 ); 
                    } 
                } 
            } 
            
            
        } 
        
        Вернуться  верно ; 
    } 
}

 

рекомендация

отwww.cnblogs.com/codingyangmao/p/11316696.html