2的幂
- 题目
- 函数原型
- 边界判断
- 算法设计:`&`运算
题目
给定一个整数,编写一个函数来判断它是否是 2
的幂次方。
示例 1:
输入: 1
输出: true
解释: 2^0 = 1
示例 2:
输入: 16
输出: true
解释: 2^4 = 16
示例 3:
输入: 218
输出: false
函数原型
C的函数原型:
bool isPowerOfTwo(int n){}
边界判断
bool isPowerOfTwo(int n){
if( n <= 0 )
return false;
}
算法设计:&
运算
思路:如果一个数是
2
的幂,那它的二进制形式一定【有且只有一个1
】,其它位都为0
,如果用n & (n-1) == 0
,那就说明这是2
的幂。
bool isPowerOfTwo(int n){
if( n <= 0 )
return false;
return ((n & n-1) == 0 ) ? true : false;
}
&
运算的复杂度:
- 时间复杂度:
- 空间复杂度: