242.有效的字母异位词
var getStrHashArr = function(s){
let sArr = []
for(let i=0;i<s.length;i++){
let num = s[i].charCodeAt() - 61
if(sArr[num]){
sArr[num]++
}else{
sArr[num] = 1
}
}
return sArr
}
var isAnagram = function(s, t) {
let sArr = getStrHashArr(s)
let tArr = getStrHashArr(t)
let flag = true
for(let i=0;i<Math.max(sArr.length,tArr.length);i++){
if(sArr[i] !== tArr[i]){
flag = false
break;
}
}
return flag
};
看完解析之后发现自己的解法空间复杂度过高,可以只声明一个数组用于hash存储,遍历两个字符串的时候分别在对应的下标进行加和减的操作,最后判断数组中所有的元素是否都为0
349. 两个数组的交集
var intersection = function(nums1, nums2) {
let arr = []
let result = new Set([])
for(let i=0;i<nums1.length;i++){
let num = nums1[i]
arr[num] = 1
}
for(let j=0;j<nums2.length;j++){
let num = nums2[j]
if(arr[num] === 1){
result.add(num)
}
}
return [...result]
};
202. 快乐数
var getSum = function (n) {
let sum = 0;
while (n) {
sum += (n % 10) ** 2;
n = Math.floor(n/10);
}
return sum;
}
var isHappy = function(n) {
let set = new Set(); // Set() 里的数是惟一的
// 如果在循环中某个值重复出现,说明此时陷入死循环,也就说明这个值不是快乐数
while (n !== 1 && !set.has(n)) {
set.add(n);
n = getSum(n);
}
return n === 1;
};
1. 两数之和
var twoSum = function(nums, target) {
let hash = []
for(let i=0;i<nums.length;i++){
if(hash[target-nums[i]]!==undefined){
return [hash[target - nums[i]],i]
}
hash[nums[i]] = i
}
};