Поиск элементов в массиве в пределах диапазона при не наивном подходе - PullRequest
0 голосов
/ 06 мая 2020

Я пытаюсь решить эту проблему без всякого наивного подхода, но мне ничего не пришло в голову, может, кто-нибудь может дать несколько советов, найти сотрудников, которые необычно часто заходят в нашу охраняемую комнату. У нас есть неупорядоченный список имен и времени доступа за один день. Время доступа указывается в виде трех или четырех чисел git в 24-часовом формате, например «800» или «2250». Напишите функцию, которая находит любого, кто заходил в комнату 3 или более раз в течение 1 часа. , и возвращается каждый раз, когда они вошли в систему в течение этого периода. (Если есть несколько 1-часовых периодов, когда это было верно, просто верните первый.

   String[][] badgeTimes = new String[][] {
        {"Paul",     "1355"},
        {"Jennifer", "1910"},
        {"John",      "830"},
        {"Paul",     "1315"},
        {"John",     "1615"},
        {"John",     "1640"},
        {"John",      "835"},
        {"Paul",     "1405"},
        {"John",      "855"},
        {"John",      "930"},
        {"John",      "915"},
        {"John",      "730"},
        {"John",      "940"},
        {"Jennifer", "1335"},
        {"Jennifer",  "730"},
        {"John",     "1630"},
      };

Ожидаемый результат: Джон: 830 835 855 915 9 Пол: 1315 1355 1405

1 Ответ

0 голосов
/ 06 мая 2020

Я бы сделал следующее:

  1. Реструктуризуйте данные, чтобы получить массив для каждого сотрудника, который содержит время этого сотрудника (при условии, что имя уникально).
  2. Выполняя шаг № 1, не забудьте добавить ведущие '0', когда необходимо, чтобы все время было 4 символами.
  3. Отсортируйте эти списки (довольно просто, когда все элементы состоят из 4 символов).
  4. Go над списком и для каждого элемента проверьте, есть ли еще два элемента и второй находится в пределах часа.

Готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...