Описание:
На лимонада стенде каждый расходы лимонад $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 ); } } } } Вернуться верно ; } }