Вы пытаетесь поправиться с помощью вопросов 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