Вы пытаетесь поправиться с помощью вопросов Hashmap? Для этого вопроса LeetCode я решаю эту проблему с помощью двух простых шагов, используя Hashmap.
Описание проблемы:
Вам дан целочисленный массив nums
. Уникальные элементы массива - это элементы, которые появляются в массиве ровно один раз.
Вернуть сумму всех уникальных элементов nums
.
Пример 1:
Input: nums = [1,2,3,2] Output: 4 Explanation: The unique elements are [1,3], and the sum is 4.
Пример 2:
Input: nums = [1,1,1,1,1] Output: 0 Explanation: There are no unique elements, and the sum is 0.
Пример 3:
Input: nums = [1,2,3,4,5] Output: 15 Explanation: The unique elements are [1,2,3,4,5], and the sum is 15.
Ограничения:
1 <= nums.length <= 100
1 <= nums[i] <= 100
Решение:
Шаг 1. Создайте хэш-карту, которая будет хранить все числа в ключах и установить значения того, сколько раз эти числа появляются в массиве.
Пример: [1,2,3,2] будет выглядеть так:
hash = { 1: 1, 2: 2, 3:1 }
Число 2 появляется дважды, поэтому для него установлено значение 2. Но 1 и 3 оба появляются один раз, поэтому для них установлено значение 1.
Шаг 2. Прокрутите каждый ключ / значение внутри хэш-карты. Если значение равно 1, значит, оно уникально. Создайте переменную для отслеживания уникальных ключей и добавьте их в переменную. В приведенном выше примере 1 и 3 имеют значение 1. Таким образом, он захватит 1 и 3 и вернет 4.
КОД:
var sumOfUnique = function (nums) {
let hash = new Map();
let total = 0;
for (var i = 0; i < nums.length; i++) {
if (hash[nums[i]]) hash[nums[i]]++;
else hash[nums[i]] = 1;
}
for (const [key, value] of Object.entries(hash)) {
if (value == 1) {
total += Number(key);
}
}
return total;
};
Сложность времени / пространства:
Время равно O (n): в худшем случае массив проходит по циклу один раз.
Пробел равно O (n): в худшем случае каждое число в массиве уникально.
Мои результаты LeetCode:
Время выполнения: 72 мс, быстрее, чем 83,13% онлайн-представлений JavaScript для суммы уникальных элементов.
Использование памяти: 41,1 МБ, менее 5,56% онлайн-JavaScript заявки на Сумму уникальных элементов.
Задача улучшить свои навыки программирования: попробуйте реализовать это решение, не просматривая предоставленный мной код!
Щелкните здесь, чтобы увидеть 1748. Сумма уникальных элементов на LeetCod e