寫在前面
題目詳情
給定一個整數,編寫一個函數來判斷它是否是 2 的冪次方。
示例 1:
輸入: 1
輸出: true
解釋: 20 = 1
示例 2:
輸入: 16
輸出: true
解釋: 24 = 16
示例 3:
輸入: 218
輸出: false
ac代碼
class Solution
{
public:
bool isPowerOfTwo(int n)
{
for(long res=1; res<=n; res<<=1)
{
if(res==n)
return true;
}
return false;
}
};
class Solution
{
public:
bool isPowerOfTwo(int n)
{
for(long res=1; res<=n; res*=2)
{
if(res==n)
return true;
}
return false;
}
};
F3. 移位運算-技巧型
- 2的冪一定是大於0。對於數n,如果n是2的冪,其二進制數應該只有1個1, 則n&n-1 一定等於0。
class Solution
{
public:
bool isPowerOfTwo(int n)
{
return n>0 && !(n&n-1);
}
};