【LeetCode】力扣代码记录
程序员文章站
2024-03-18 21:42:52
...
LeetCode记录
1. 两数之和
利用obj或map存储,查找的时候O(1)
而不必像数组一样遍历一遍才能查找O(n)
// 两遍独立的for循环,O(n)
var twoSum = function(nums, target) {
var obj = {}
var len = nums.length
for(let i = 0; i < len; i++){
let cur = nums[i];
let prop = target - cur;
obj[prop] = i;
}
for(let i = 0; i < len; i++){
let cur = nums[i];
if(obj.hasOwnProperty(cur)){
if(i !== obj[cur]){
// 不能等于自己
return [i, obj[cur]];
}
}
}
};
7. 整数翻转
对于2/4/8/16进制可以通过移位运算符获得每一位
十进制的话,使用%求余运算符
var reverse = function(x) {
// 整数翻转,很巧的思路是利用栈的思想
var top, res = 0;
while(x!==0){
// pop
top = x % 10;
x = (x - top) / 10;
// push
if((Math.pow(2,31) - top)/10 < res || (-1*Math.pow(2,31)-1-top)/10 > res){
// 这里注意判断一下溢出条件[2^31, -2^31-1]
return 0;
}
res = res * 10 + top;
}
return res;
};