242.有效的字母异位词
function isAnagram(s: string, t: string): boolean {
let sMap = new Map();
let tMap = new Map();
for(let letter of s){
sMap.get(letter) ? sMap.set(letter, sMap.get(letter) + 1) : sMap.set(letter, 1);
}
for(let letter of t){
tMap.get(letter) ? tMap.set(letter, tMap.get(letter) + 1) : tMap.set(letter, 1);
}
for(let key of sMap.keys()){
if(tMap.get(key) !== sMap.get(key)){
return false;
}
tMap.delete(key);
}
if(tMap.size !== 0) return false;
return true;
};
官方题解:
function isAnagram(s: string, t: string): boolean {
if (s.length !== t.length) return false;
let helperArr: number[] = new Array(26).fill(0);
let pivot: number = 'a'.charCodeAt(0);
for (let i = 0, length = s.length; i < length; i++) {
helperArr[s.charCodeAt(i) - pivot]++;
helperArr[t.charCodeAt(i) - pivot]--;
}
return helperArr.every(i => i === 0);
};
349. 两个数组的交集
function intersection(nums1: number[], nums2: number[]): number[] {
let nums1Map = new Set(nums1);
let nums2Map = new Set(nums2);
let results = []
nums1Map.forEach(value => {
nums2Map.has(value) && results.push(value);
})
return results;
};
秀操作:
function intersection(nums1: number[], nums2: number[]): number[] {
return Array.from(new Set(nums1.filter(i => nums2.includes(i))))
};
202. 快乐数
function numToArr(n: number): number[]{
let resultArr = [];
let rest = n;
while(rest){
resultArr.push(rest % 10);
rest = Math.floor(rest / 10);
}
return resultArr;
}
function isHappy(n: number): boolean {
let mySet = new Set();
let sum = n;
while(true){
let nums = numToArr(sum);
sum = nums.reduce((accumulator, currentValue) => accumulator + currentValue * currentValue, 0);
if(mySet.has(sum)) return false;
mySet.add(sum);
if(sum === 1) return true;
}
};
官方题解:
return String(val).split("").reduce((pre, cur) => (pre + Number(cur) * Number(cur)), 0); 这里太秀了
function isHappy(n: number): boolean {
// Utils
// 计算val各位的平方和
function calcSum(val: number): number {
return String(val).split("").reduce((pre, cur) => (pre + Number(cur) * Number(cur)), 0);
}
let storeSet: Set<number> = new Set();
while (n !== 1 && !storeSet.has(n)) {
storeSet.add(n);
n = calcSum(n);
}
return n === 1;
};
1. 两数之和
function twoSum(nums: number[], target: number): number[] {
let myMap = new Map();
for(let index in nums){
if(myMap.has(nums[index]))
return [myMap.get(nums[index]), index]
myMap.set(target - nums[index], index);
}
};