231. Power of Two (E)

2020-11-26  本文已影响0人  Ysgc

Given an integer n, return true if it is a power of two. Otherwise, return false.

An integer n is a power of two, if there exists an integer x such that n == 2x.

Example 1:

Input: n = 1
Output: true
Explanation: 20 = 1
Example 2:

Input: n = 16
Output: true
Explanation: 24 = 16
Example 3:

Input: n = 3
Output: false
Example 4:

Input: n = 4
Output: true
Example 5:

Input: n = 5
Output: false

Constraints:

-231 <= n <= 231 - 1


我的答案:

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

Runtime: 4 ms, faster than 34.61% of C++ online submissions for Power of Two.
Memory Usage: 6.2 MB, less than 38.78% of C++ online submissions for Power of Two.

通过了,效率有点低

看答案里面有人用bitwise来做


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

2^n => 100000...000
2^n-1 => 011111...111

上一篇 下一篇

猜你喜欢

热点阅读