LeetCode 231 冪的問題

2021-08-31 18:17:12 字數 574 閱讀 1498

在leetcode中有幾道很類似的冪問題,我們可以首先來看看2的冪的問題:

這其實是一道很簡單的題目,我們可以從兩個角度來解決這個問題,首先這種解法是位運算,我們可以發現2的冪次方轉換成二進位制第一位都是1,後面都是0,比如說2的二進位制是10,4的二進位制是100,8的二進位制是1000,所以說如果n是2的冪次方,那麼n-1轉換成二進位制第一位一定是0,所以將n和n-1進行位的與運算如果是0的話就可以判定n是2的冪次方了,用**表示就是n&(n-1)==0。這種解法其實是比較難想到的,我們正常思路的解法是,不斷地迭代:

class solution 

return true;}}

這樣每次判斷當前的數是否是偶數,不是我們就return false,否則就除以2再進行下一輪計算,直到最後n=1迭代結束,return true,這個思路是很簡單的,同樣的思路我們就可以解決leetcode 326和342題,只需要把迭代的數進行改變就可以了,希望這個題可以讓大家對冪的演算法有所理解,謝謝。

Leetcode題解之數學問題(3) 3的冪

題目 題目描述 給定乙個整數,寫乙個函式來判斷它是否是 3 的冪次方。示例 1 輸入 27 輸出 true示例 2 輸入 0 輸出 false示例 3 輸入 9 輸出 true示例 4 輸入 45 輸出 false高階 你能不使用迴圈或者遞迴來完成本題嗎?思路 如果是3的冪 一定能被3除剩下1.就將...

leetcode 231(2的冪)(位運算)

q 給定乙個整數,編寫乙個函式來判斷它是否是 2 的冪次方。示例 1 輸入 1 輸出 true 解釋 20 1 運用位運算就可以很快的解出來。因為2的冪次都是1,10,100,1000,10000 所以如果是2的冪次,則n n 1 0 如下 又嘗試了一下不用位運算解這道題 class solutio...

LeetCode 342 4的冪(位運算)

給定乙個整數 32 位有符號整數 請編寫乙個函式來判斷它是否是 4 的冪次方。示例 1 輸入 16輸出 true 示例 2 輸入 5輸出 false 高階 你能不使用迴圈或者遞迴來完成本題嗎?相關題目 leetcode 231.2的冪 leetcode 338.位元位計數 2進製1的個數 class...