日常刷题0x20之未出新手村

82 阅读1分钟

如果不小心网友来到了这里请网友自动飘走,浪费你们时间表示歉意。该系列博客的目的是:想作为自律工具和朋友一起每天刷几道题作为打卡督促的功能,没有什么可参考学习的东西,也不是刷博客量充大佬的目的

题号:191
//移位运算符>>>  >>是不对的
var hammingWeight = function (n) {
    let count = 0
    while (n != 0) {
        //每次n与1进行与操作,结果为1说明后面最后1位为1要么为0
        count += n & 1
        //然后右移1位挤掉最后移位继续判定
       n = n >>> 1
    }
    return count
};
//通过mask去和每一位比较进行与运算来求结果
var hammingWeight = function(n) {
    let count = 0
    let mask = 1
    for (let idx = 0; idx < 32; idx++) {
        if ((mask&n)!=0) {
            count++
        }
        mask=mask<<1
    }
    return count
};
题号:456
var find132pattern = function (nums) {

    let leftMin = nums[0]
    for (let i = 1; i < nums.length; i++) {
        if (leftMin < nums[i]) {
            let k = i + 1
            while (k < nums.length) {
                //去找符合题意的k
                if (nums[k] < nums[i] && nums[k] > leftMin) {
                    return true
                }
                k++
            }
        }
        leftMin = Math.min(leftMin,nums[i])
    }
    return false
};
题号:303
//是的,这样做就对不起它这个简单的题目了
//一般应该不会让这么做
var NumArray = function (nums) {
     this.nums = nums
};
NumArray.prototype.sumRange = function (left, right) {
    let sum = 0
    for (let i = left; i < right + 1; i++) {
        sum += this.nums[i]
    }
    return sum
};


var NumArray = function (nums) {
     this.nums = nums
     this.sums = []
     //计算前缀和
     for (let i = 0; i < nums.length; i++) {
         if (i == 0) {
            this.sums[i] = nums[i]
         } else {
            this.sums[i] = this.sums[i-1] + nums[i]
         }
     }
};

NumArray.prototype.sumRange = function (left, right) {
    if (left == 0) {
        return this.sums[right]
    } else {
        return this.sums[right] - this.sums[left - 1]
    }
};