leetcode-231. 2的冪刷題筆記(c++)

寫在前面

  • 運算符,活學活用
    • 乘法 vs 移位運算
    • 真tm的菜,,,,,,

題目詳情

給定一個整數,編寫一個函數來判斷它是否是 2 的冪次方。

示例 1:
	輸入: 1
	輸出: true
	解釋: 20 = 1
示例 2:
	輸入: 16
	輸出: true
	解釋: 24 = 16
示例 3:
	輸入: 218
	輸出: false

ac代碼

  • F1. res<<=1
class Solution
{
public:
    bool isPowerOfTwo(int n)
    {
        for(long res=1; res<=n; res<<=1)
        {
            if(res==n)
                return true;
        }
        return false;
    }
};
  • F2. res*=2
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);
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章