22.05.2021, 17:52
|
Интересующийся
|
|
Регистрация: 22.05.2021
Сообщений: 10
|
|
Помогите решить задачку
Помогите решить задачку через циклы(for) и условия(if)
|
|
22.05.2021, 17:59
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Пожалуйста, отформатируйте свой код!
Для этого его можно заключить в специальные теги: js/css/html и т.п., например:
[html run]
... минимальный код страницы с вашей проблемой
[/html]
О том, как вставить в сообщение исполняемый javascript и html-код, а также о дополнительных возможностях форматирования - читайте http://javascript.ru/formatting.
|
|
22.05.2021, 20:06
|
Интересующийся
|
|
Регистрация: 22.05.2021
Сообщений: 10
|
|
рони,
There is a special kind of apple tree that grows apples every day for n days. On the ith day, the tree grows apples[i] apples that will rot after days[i] days, that is on day i + days[i] the apples will be rotten and cannot be eaten. On some days, the apple tree does not grow any apples, which are denoted by apples[i] == 0 and days[i] == 0.
You decided to eat at most one apple a day (to keep the doctors away). Note that you can keep eating after the first n days.
Given two integer arrays days and apples of length n, return the maximum number of apples you can eat.
Пример 1:
Input: apples = [1,2,3,5,2], days = [3,2,1,4,2]
Output: 7
Пояснение: вы можете съесть 7 яблок:
- В первый день вы едите яблоко. которые выросли в первый день.
- На второй день вы едите яблоко, которое выросло на второй день.
- На третий день вы едите яблоко, которое выросло на второй день. После этого дня яблоки, выросшие на третий день, загнивают.
- С четвертого по седьмой день вы едите яблоки, выросшие на четвертый день.
Пример 2:
Input: apples = [3,0,0,0,0,2], days = [3,0,0,0,0,2]
Output: 5
Пояснение: Вы можете съесть 5 яблок:
- С первого по на третий день вы едите яблоки, выросшие в первый день.
- Ничего не делайте в четвертый и пятый дни.
- На шестой и седьмой день вы едите яблоки, выросшие на шестой день.
let eatenApples = function(apples, days) {
const arr = [];
let totalApple = 0;
for(let i = 0; i < apples.length; i++) {
arr.push([i + days[i], apples[i]]);
totalApple++;
}
return totalApple;
};
|
|
22.05.2021, 20:10
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
vurdalak21,
за развёрнутое пояснение спасибо, жаль пока не могу ничем помочь, не понимаю условия задачи.
|
|
22.05.2021, 21:42
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
vurdalak21,
let eatenApples = function(apples, days) {
let totalApple = 0;
let current = 0;
for (let k of days) {
if (!k) k = 1;
for (let i = 0; i < k; i++) {
let index = apples.findIndex((a, i) => i <= current && i > current - 3 && a);
if (index !== -1) {
totalApple++;
apples[index]--
}
current++;
}
}
return totalApple;
};
let apples = [1, 2, 3, 5, 2], days = [3, 2, 1, 4, 2];
console.log(eatenApples(apples, days)) // 7
apples = [3, 0, 0, 0, 0, 2], days = [3, 0, 0, 0, 0, 2]
console.log(eatenApples(apples, days)) // 5
Последний раз редактировалось рони, 22.05.2021 в 21:45.
|
|
23.05.2021, 10:30
|
Интересующийся
|
|
Регистрация: 22.05.2021
Сообщений: 10
|
|
рони,
спасибо
|
|
23.05.2021, 10:55
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
рони,
На [6, 1, 1], [16, 1, 1] должно быть 8, а получается 5.
Тут явно задачка на приоритетную очередь (можно взять двоичную кучу, поскольку количество элементов известно). Каждый день определяем дату протухания очередной порции, и засовываем пару {count, expire} в очередь, так что первым элементом будет пара с минимальным expire. Пока оный expire меньше текущего дня, удаляем. В итоге наверху останется минимальный, но ещё годный expire. Из неё и забираем яблочко, а если count обнулился, тоже удаляем. Сложность O(N*ln(N))
Доберусь до компа, напишу говнокод.
|
|
23.05.2021, 11:00
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Сообщение от Alexandroppolus
|
должно быть 8, а получается 5.
|
яблоки у них червивые, есть невозможно)))
из любого количества яблок в день, максимум что можно съесть это 3, остальное по условию сгнивает.
[6, 1, 1] => [3, 1, 1] => 5
Последний раз редактировалось рони, 23.05.2021 в 11:05.
|
|
23.05.2021, 12:35
|
|
Профессор
|
|
Регистрация: 25.10.2016
Сообщений: 1,012
|
|
Сообщение от рони
|
из любого количества яблок в день, максимум что можно съесть это 3
|
Что-то не нашёл такого поинта в условии..
|
|
23.05.2021, 14:07
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,105
|
|
Alexandroppolus,
Цитата:
|
that is on day i + days[i] the apples will be rotten and cannot be eaten.
|
возможно я неправильно понял условия задачи
Последний раз редактировалось рони, 23.05.2021 в 14:27.
|
|
|
|