242.有效的字母异位词
var isAnagram = function(s, t) {
const map = new Array(26).fill(0);
for (const cs of s) {
map[cs.charCodeAt() - 'a'.charCodeAt()] += 1;
}
for (const ct of t) {
map[ct.charCodeAt() - 'a'.charCodeAt()] -= 1;
}
let res = true;
for (const m of map) {
if (m !== 0) return false;
}
return res;
};
349. 两个数组的交集
- 关键词:Set 用来去重
- better思路:内部去重->比较->结果去重
var intersection = function(nums1, nums2) {
const set = new Set([...nums1, ...nums2]);
const res = [];
for (const v of set.values()) {
if (nums1.indexOf(v) !== -1 && nums2.indexOf(v) !== -1) {
res.push(v);
}
}
return res;
};
var intersection = function(nums1, nums2) {
const set1 = new Set(nums1);
const res = new Set();
for (const n of nums2) {
if (set1.has(n)) {
res.add(n);
}
}
return Array.from(res);
};
202.快乐数
- 关键点:get 到sum重复则一定死循环
- another point:用标准求和(用字符串的方式做比较好想但耗时长)
p.s. 解答里的环形链表思想感觉有点东西233
var isHappy = function(n) {
const res = new Set();
let sum = n;
while(1) {
_n = Array.from(`${sum}`).map(n => +n);
console.log(_n);
sum = _n.reduce((prev, curr) => (prev + (curr * curr)), 0);
console.log(sum);
if (sum === 1) return true;
if (!res.has(sum)) {
res.add(sum);
} else {
return false;
}
}
};
1.两数之和
- 关键点:根据target找目标值 “反着找”!
var twoSum = function(nums, target) {
const map = new Map();
for (let i=0; i<nums.length; i++) {
const next = target - nums[i];
if (map.has(next)) {
return [i, map.get(next)];
} else {
map.set(nums[i], i);
}
}
};