Проблема
Выигрышная карта
В карточной игре каждому игроку дается набор случайных карт. Игроки бросают на стол свою одну выигрышную карту, игрок с самой высокой картой выигрывает.
Выигрышная карта — это карта, которая существует только один раз в наборе карт, и самая высокая карта.
Учитывая массив наборов целых чисел карт, верните карту выигравшего игрока. Вернуть -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;
}
В любом случае, если у вас есть лучший способ решения этой проблемы, вы можете оставить свое решение в комментариях. Я не эксперт. Просто учусь вслух.
Не забудьте поставить лайк, поделиться и оставить комментарий. 🙂