我们该掌握的算法:

数组篇
1,给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。
你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。
示例:
给定 nums = [2, 7, 11, 15], target = 9
因为 nums[0] + nums[1] = 2 + 7 = 9
所以返回 [0, 1]
var twoSum = function(nums, target) {
let map = {};
for(let i=0;i<nums.length;i++){
let n = target-nums[i];
let hasVal = map.hasOwnProperty(n);
if(hasVal){
return [map[n],i]
}
map[nums[i]] = i;
}
return []
};
知识点:地图函数
2,给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例:
输入: 123 输出: 321
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为[−2^31, 2^31− 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
const maxVal = Math.pow(2,31) - 1;
const minVal = Math.pow(-2,31);
const flag = x > 0 ? true : false;
// 全部转化成正数进行比较
x = flag ? x : -x;
x = +(x.toString().split('').reverse().join(''));
x = flag ? x : -x;
// 比较反转之后的数字是否溢出
if(x > maxVal || x < minVal) return 0;
return x;
};
let x = 120;
let result = reverse(x);
console.log(result);
复杂度分析 时间复杂度: O(N) 空间复杂度: O(1)