编程语言
首页 > 编程语言> > 《算法零基础100讲》(第1讲) 幂和对数题解

《算法零基础100讲》(第1讲) 幂和对数题解

作者:互联网

231. 2 的幂
如果一个数是2的幂 那他转成二进制那肯定只会有一个1 并且1是在最前面的和这个数减1的数做且运算那必定是0.
比如8的二进制是1000 7的二进制是0111 他们做且运算得出的就是0

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if (n < 1) {
            return false;
        }
        return (n & n - 1) == 0;
    }
};

列出所有剩下几的幂都可以这样做就是要考虑范围

class Solution {
public:
    bool isPowerOfTwo(int n) {
        if (n == 1) {
            return true;
        }
        if (n <= 0 ) {
            return false;
        }

        unsigned int k = 1;//范围2的三十二次方-1
        int i;
        for ( i = 1; i < 31; ++i) {
            k *= 2;
            if (k == n) return true;
        }
        return false;

    }
};

326. 3 的幂
n 对 3 进行试除,直到 n 不再与 3 呈倍数关系,最后判断 n 是否为 3^0 = 1


 class Solution {
    public boolean isPowerOfThree(int n) {
        if (n <= 0) return false;
        while (n % 3 == 0) n /= 3;
        return n == 1;
    }
}

class Solution {
public:
    bool isPowerOfThree(int n) {
        if (n == 0) return false;
        if (n == 1) return true;
        unsigned int k = 1;
        int i;
        for (i = 1; i <= 20;++i) {
            k *= 3;
            if (k == n) return true;
        }
        return false;
    }
};


342. 4的幂

class Solution {
public:
    bool isPowerOfFour(int n) {
        if (n == 0) return false;
        while (n != 1) {
            if (n % 4 != 0) return false;
            n = n / 4;
        }
        return true;
    }
};

class Solution {
public:
    bool isPowerOfFour(int n) {
        if (n == 0) return false;
        if (n == 1) return true;

        unsigned int k = 1;
        int i;
        for (i = 1; i<=16; ++i) {
            k *= 4;
            if(k == n) return true;
        }
        return false;
    }
};

标签:return,int,题解,bool,对数,false,100,true,public
来源: https://blog.csdn.net/w1647114628/article/details/121866884