242.有效的字母异位词
1.数组方法
349. 两个数组的交集
1.哈希表 Set
哈希表 Set 1.哈希表api:new Set(arr), set.has(), set.add(), Array.from(set) 2.思路:先将一个数组拍成哈希表,然后查找另一个数组的共同元素,再将共同元素加入新的哈希表
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function(nums1, nums2) {
// 先把长的数组做成哈希表
let nums1Set = new Set(nums1);
let resSet = new Set();
// 查表,添加nums2中元素
for (let i = 0; i < nums2.length; i++) {
if (nums1Set.has(nums2[i])) {
resSet.add(nums2[i])
}
}
return Array.from(resSet);
};
2.数组 Array
202. 快乐数
Set方法
Set
0.理解sum出现重复循环,即不可能是“快乐数”
1.求各位数平方和
2.set判断方法
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function(n) {
// 两位数的各位数平方和
const getSum = function(num) {
let sum = 0;
// 各位
while (num) {
sum += (num % 10) ** 2
num = Math.floor(num / 10);
}
return sum;
}
let set = new Set();
while (true) {
if (n === 1) return true;
if (set.has(n)) return false;
set.add(n);
n = getSum(n);
}
};
1. 两数之和
哈希表 注意key&value分别是什么
哈希表法 map
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function(nums, target) {
let map = new Map();
for (let i = 0; i < nums.length; i++) {
if (map.has(target - nums[i])) {
return [i, map.get(target - nums[i])]
}
// 关键
map.set(nums[i], i);
}
return [];
};