Выигрышная карта (серия DSA)


Проблема

Выигрышная карта
В карточной игре каждому игроку дается набор случайных карт. Игроки бросают на стол свою одну выигрышную карту, игрок с самой высокой картой выигрывает.

Выигрышная карта — это карта, которая существует только один раз в наборе карт, и самая высокая карта.

Учитывая массив наборов целых чисел карт, верните карту выигравшего игрока. Вернуть -1, если такая карта не найдена.

  • Пример 1:
  • Вход: cards = [[5,7,3,9,4,9,8,3,1], [1,2,2,4,4,1], [1,2,3]].
  • Выход: 8

  • Пример 2:

  • Вход: карты = [[5,5], [2,2]].

  • Выход: -1

Решение

  • Пройдитесь по двумерному массиву,
  • Во втором цикле, если элемент существует в hashset, удалите предыдущее появление i. Иначе добавьте в hashset
  • пройдитесь по hashset для поиска наибольшего числа
function winningCard(multiArray) {
    let map = new Set();
    multiArray.forEach(item => {
        for (let i = 0; i < item.length; i++) {
            if (map.has(item[i])) {
               map.delete(item[i])
            } else map.add(item[i])
        }
    })

    if (map.size === 0) return -1;

    let highest = 0;
    for (let i of map) {
        if(i > highest) {
            highest = i
        }
    }

   return highest;
}
Войдите в полноэкранный режим Выйти из полноэкранного режима

В любом случае, если у вас есть лучший способ решения этой проблемы, вы можете оставить свое решение в комментариях. Я не эксперт. Просто учусь вслух.

Не забудьте поставить лайк, поделиться и оставить комментарий. 🙂

Оцените статью
Procodings.ru
Добавить комментарий