Выборы студенческого совета - PullRequest
0 голосов
/ 25 марта 2020

Выборы в студенческий совет работают странным образом. Каждому кандидату присваивается уникальный идентификационный номер. Университет разделен на пять зон, и каждая зона предлагает список кандидатов, которых он хотел бы выдвинуть в Совет. Любой кандидат, предложенный тремя или более зонами, избирается. Нет нижнего или верхнего предела размера Совета. Разработайте алгоритм, чтобы взять предложенный список кандидатов из всех пяти зон в качестве входных данных (в отсортированном порядке) и рассчитать, сколько кандидатов избрано в Совет. Проиллюстрируйте свой алгоритм на следующем примере. Предположим, что кандидатами, предложенными пятью зонами, являются:

 Zone 1: [5,12,15,62,87]
 Zone 2: [7,14,48,62,87,92]
 Zone 3: [5,12,14,87]
 Zone 4: [12,17,49,52,92,98]
 Zone 5: [5,12,14,87,92]

Я думаю, что подсказка здесь отсортирована, но я не смог найти какие-либо способы решения этой проблемы. Если кто-то придумать решение, пожалуйста, опубликуйте его. Спасибо.

1 Ответ

0 голосов
/ 25 марта 2020

У меня есть простая идея.

  1. Инициализируйте HashMap (ключ, значение) с ключом, представляющим идентификатор кандидата, и значением, представляющим номер предложенного.
  2. L oop для каждого элемента каждой зоны.
  3. Если элемент еще не появился, добавьте новое (ключ, значение) со значением 1, иначе увеличьте значение на 1.
  4. Наконец, вы можете проверить в hashmap и выберите ключ с равным или большим 3.

Итак, вы можете следовать моему псевдокоду

Hashmap map = new HashMap<int, int>()
ForEach z in ZoneLine
   ForEach e in z
      If containKey(e)
         put map[e] <- 1
      Else map[e]+=1
ForEach m in Map
   If map[m] >= 3
      return m

Надеюсь, это поможет.

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