Показать сообщение отдельно
  #1 (permalink)  
Старый 14.03.2022, 16:07
Аспирант
Отправить личное сообщение для dc65k Посмотреть профиль Найти все сообщения от dc65k
 
Регистрация: 19.05.2020
Сообщений: 46

Задача про отель
Всем привет. Подскажите, верно ли я решил данную задачу?

/*
Даны даты заезда и отъезда каждого гостя.
Для каждого гостя дата заезда строго раньше даты отъезда (то есть каждый гость останавливается хотя бы на одну ночь).
В пределах одного дня считается, что сначала старые гости выезжают, а затем въезжают новые. Найти максимальное число постояльцев, которые одновременно проживали в гостинице (считаем, что измерение количества постояльцев происходит в конце дня).
 */

const dates = [
    [1, 2],
    [1, 3],
    [2, 4],
    [2, 3],
]

const f = (arr) => {

    let acc = 0;

    let arrivalDate = arr.reduce((accumulator, currentValue) => {

        let key = currentValue[0]

        if (accumulator[key]) {
            accumulator[key] += 1
        } else {
            accumulator[key] = 1
        }

        return accumulator
    }, {});

    let departureDate = arr.reduce((accumulator, currentValue) => {

        let key = currentValue[1]

        if (accumulator[key]) {
            accumulator[key] += 1
        } else {
            accumulator[key] = 1
        }

        return accumulator
    }, {});

    for (let i = 0; i < arr.length; i++) {

        let current = arr[i];

        acc -= departureDate[current[1]];
        acc += arrivalDate[current[0]];
    }

    return acc;
}

console.log(f(dates));
Ответить с цитированием