242.有效的字母异位词
准备面试隔了三天没刷题, 结果面试里就考到哈希表了,也是蛮感叹的.
简单题, 不过api又忘的差不多了
这道可以用数组手动实现一个简易哈希表, 但(因为面试里这么干我最后写不出来了)为了适配unicode还是用map更妥当
/**
* @param {string} s
* @param {string} t
* @return {boolean}
*/
var isAnagram = function(s, t) {
if(s.length!=t.length){
return false
}
let map = new Map()
let num
for(let i = 0; i<s.length;i++){
if(map.has(s[i])){
num = map.get(s[i])
map.set(s[i],num+1)
}else{
map.set(s[i],1)
}
if(map.has(t[i])){
num = map.get(t[i])
map.set(t[i],num-1)
}else{
map.set(t[i],-1)
}
}
if(Array.from(map.values()).every(e=>e===0)){
return true
}else{
return false
}
};
349. 两个数组的交集
题目链接:https://leetcode.cn/problems/intersection-of-two-arrays/
确实使用set会很快, 依稀记得学数据结构时要求用线性表自己实现简单的set(纯遍历)也这样做过
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersection = function(nums1, nums2) {
let set = new Set()
let result = new Set()
for(let i = 0; i< nums1.length;i++){
set.add(nums1[i])
}
for(let i = 0; i<nums2.length;i++){
if(set.has(nums2[i])){
result.add(nums2[i])
}
}
return Array.from(result.values())
};
202. 快乐数
开始没有思路, 看了提示后想了想, 如果无限循环,不就可用set来判断么;
/**
* @param {number} n
* @return {boolean}
*/
var isHappy = function(n) {
let arr
let set = new Set()
let num = n
do{
arr = []
while(num>0){
arr.push(num%10)
num = Math.floor(num/10)
}
num = 0
arr.forEach(e=>num+=e*e)
if(num==1){
return true
}else if(set.has(num)){
console.log(num)
return false
}else{
set.add(num)
}
}
while(true);
};
1. 两数之和
经典回顾,不可不品
/**
* @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(nums[i])){
return [map.get(nums[i]), i]
}else{
map.set(target - nums[i],i)
}
}
};
标签:Leetcode242,set,return,随想录,number,param,num,let,两数
From: https://www.cnblogs.com/herbert118/p/17246956.html