【简单*2】 二进制中1的个数(有个小坑点), 数值的整数次方 (快速幂,代码的完整性)

 位运算 二进制中1的个数 67638 34.21%

题目描述

输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。

注意:如果int n,n为负数的话,右移会高位补1而不是0造成死循环。

class Solution {
public:
     int  NumberOf1(int n) {
         int cnt=0;
         unsigned t=n;
         while(t)
         {
             cnt+=t&1;
             t>>=1;
         }
         return cnt;
     }
};
代码的完整性 数值的整数次方 61908 31.03%

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

坑点:指数可以为负数。

直接快速幂就好了。

class Solution {
public:
    double Power(double base, int exponent) {
        unsigned n=exponent;
        if(exponent<0)
        {
            n=-exponent;
        }
        double ret=1;
        while(n)
        {
            if(n&1)
            {
                ret*=base;
            }
            base*=base;
            n>>=1;
        }
        if(exponent<0)
            return 1/ret;
        return ret;
    }
};

猜你喜欢

转载自blog.csdn.net/GreyBtfly/article/details/87987923
今日推荐