много людей, стоящих в огромную очередь. У каждого из них есть единственная банкнота в 100, 50 или 25 долларов. Билет на «Мстителей» стоит 25 долларов.
Вася в настоящее время работает клерком. Он хочет продать билет каждому человеку в этой очереди.
Может ли Вася продать билет каждому и дать сдачу, если у него изначально нет денег и он продает билеты строго в порядке очереди?
Верните ДА, если Вася может продать билет каждому и отдать сдачу с имеющимися у него в данный момент счетами. В противном случае верните NO.
Мое решение:
function tickets(peopleInLine) {
let cassaVasia = 0;
for (let i = 0; i < peopleInLine.length; i++) {
let banknota = peopleInLine[i]; // текущая банкнота
cassaVasia += banknota; // касса
if (cassaVasia - banknota + peopleInLine[i + 1] <= cassaVasia) {
return "YES";
} else {
return "NO";
}
}
}
Но на эти массивы не проходит:
// let arr = [ 25, 25, 25, 25, 25, 100, 100 ] // NO
// [ 100, 100, 100, 100, 100, 100, 100, 100, 100, 100 ] // NO
// [ 25, 25, 25, 25, 25, 100, 100 ] // NO
// [ 50, 50, 50, 50, 50, 50, 50, 50, 50, 50 ] // NO
//[ 25, 25, 25, 25, 25, 100, 100 ] // NO
может кто поможет ?
для начала заведи объект с количеством монет в кассе, он может выглядеть, например, так: { 25: 1, 50: 3, 100: 4 } и дальше идешь по массиву и смотришь: если числу нужна сдача, тогда уменьшаешь счетчики в объекте, начиная с большего, пока не наберется нужная сумма сдачи потом сохраняешь в объект текущую монету
Обсуждают сегодня