算法|242.有效的字母异位词349. 两个数组的交集202. 快乐数1.两数之和
242.有效的字母异位词
思考: 一种是hash表, 一种是通过排序转成字符串
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function(s, t) {
return s.split('').sort().join('')===t.split('').sort().join('')
};
349. 两个数组的交集
思路: 考虑hash表key的唯一性, 一种是用对象实现, 一种用set 来实现
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function (nums1, nums2) {
const map1 = {}
const map2 = {}
for (let ch of nums1) {
map1[ch] = 1
}
for (let ch of nums2) {
map2[ch] = 1
}
const key1 = Object.keys(map1)
const key2 = Object.keys(map2)
return key2.filter(item => key1.includes(item))
};
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function (nums1, nums2) {
const result = []
for(let ch of nums1){
if(nums2.includes(ch)){
result.push(ch)
}
}
return [...new Set(result)]
};
202. 快乐数
没想到这题还是简单题,然而不简单, 看题解的, 还没明白道理
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function (n) {
let set = new Set();
function getNum(n) {
let sum = 0;
// 这个公式是干嘛的呢
while (n) {
sum += (n % 10) ** 2;
n = Math.floor(n / 10);
}
return sum;
}
while (n !== 1 && !set.has(n)) {
set.add(n);
n = getNum(n);
}
return n === 1;
};
1.两数之和
思路: hash 键存value, 值存下标
/**
* @param {number[]} nums
* @param {number} target
* @return {number[]}
*/
var twoSum = function (nums, target) {
const map = {};
for (let i = 0; i < nums.length; i++) {
if (map[target - nums[i]] !== undefined) {
return [i, map[target - nums[i]]];
}
map[nums[i]] = i;
}
return [];
}
原文地址:https://blog.csdn.net/shjavadown/article/details/136308603
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!