leetcode解题: Power of Two (231)

Given an integer, write a function to determine if it is a power of two.

解法1:

经典的算法,如果是pot,那么只有最高位为1,如果将此数减1之后再和原来的数取AND,结果一定为0.
要注意的是要规避:1. 负数 2. 0
这两种情况都不是power of two
C++

1
2
3
4
5
6
7
8
9
class Solution {
public:
bool isPowerOfTwo(int n) {
if (n <= 0) return false;
return (n & ( n - 1)) == 0;
}
};

Java

1