LeetCode 342. 4的幂(位运算)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 342. 4的幂(位运算)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
- 2.1 通用解法
- 2.2 找規律
1. 題目
給定一個整數 (32 位有符號整數),請編寫一個函數來判斷它是否是 4 的冪次方。
示例 1: 輸入: 16 輸出: true示例 2: 輸入: 5 輸出: false進階:
你能不使用循環或者遞歸來完成本題嗎?
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/power-of-four
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
相關題目:LeetCode 231. 2的冪 && LeetCode 338. 比特位計數(2進制1的個數)
2.1 通用解法
class Solution { public:bool isPowerOfFour(int n) {if(n < 1)return false;while(n%4 == 0)n /= 4;return n == 1;} };2.2 找規律
| 40 = 1 | 1 |
| 41 = 4 | 100 |
| 42 = 16 | 1 0000 |
| 43 = 64 | 100 0000 |
發現4的整數次冪:只有一個1(跟2的整數次冪一致),且1在奇數位
在C/C++ 三種進制前綴:
- 二進制: 0b
- 八進制: 0
- 十六進制: 0x
設計一個只在奇數位或者只在偶數位為1的二進制數,進行位運算判斷
class Solution { public:bool isPowerOfFour(int n) {if(n < 1)return false;int k = 0b10101010101010101010101010101010;//32位if((n&(n-1)) != 0)//先判斷是否為2的冪,只有一個bit為1return false;if((n&k) == 0)return true;return false;} };
or
如果圖方便,可以記住那個魔法數字,不過感覺沒必要,記住二進制形式就好了
總結
以上是生活随笔為你收集整理的LeetCode 342. 4的幂(位运算)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 179. 最大数(自定
- 下一篇: LeetCode 980. 不同路径 I