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;
}
&
運算的複雜度:
- 時間複雜度:
- 空間複雜度: