欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【LeetCode】力扣代码记录

程序员文章站 2024-03-18 21:42:52
...

LeetCode记录

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;
};