Код Middle Массивы и хеш-таблицы обновлено

Чемпионат по шагам

Условие

Массив дней, в каждом - записи { userId, steps }. Найди userId участников с наибольшей суммой шагов за все дни, при этом не пропустивших ни одного дня. Верни { userIds, steps }; если чемпионов нет - { userIds: [], steps: 0 }.

Что проверяют тесты

  • пропустивший день не чемпион

  • несколько чемпионов

  • никто не прошёл все дни

  • один день

  • идентификаторы остаются числами

Как подойти

Один проход по всем записям с накоплением пары «сумма, дни», затем фильтр по полноте участия и выбор максимума. Ловушка, на которой валятся: объект вместо Map превращает числовые идентификаторы в строки, и userIds приходит как ['2'] вместо [2]. Второй момент - сначала фильтровать по дням, потом искать максимум: иначе чемпионом станет пропустивший день лидер.

Подсказки: 3
  1. Считай сумму и количество дней в одном проходе.
  2. Условие «не пропустил ни дня» - количество дней равно длине входа.
  3. Map, а не объект: userId числовой и в объекте станет строкой.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.