p77 2的幂

一:解题思路

方法一:只要原始数字为2的倍数,不断的去除以2,直到最后结果为1.Time:O(log(n)),Space:O(1)

方法二:我们可以发现,当一个数中有且仅有某一位二进制为1的时候,那么这个数就肯定是2的幂。所以我们可以看n&(n-1)==0来判断这个数是否为2的幂。Time:O(1),Space:O(1)

二:完整代码示例 (C++版和Java版)

方法一C++:

class Solution {
public:
    bool isPowerOfTwo(int n) 
    {
        if (n <= 0) return false;
        while (n%2==0)
        {
            n /= 2;
        }

        return (n==1);
    }
};

方法一Java:

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

方法二C++:

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

方法二Java:

class Solution {
        public boolean isPowerOfTwo(int n) 
        {
              return n>0 && (n&(n-1))==0;
        }
    }

猜你喜欢

转载自www.cnblogs.com/repinkply/p/12628765.html
今日推荐