Leetcode--342. 4的幂
給定一個整數 (32 位有符號整數),請編寫一個函數來判斷它是否是 4?的冪次方。
示例 1:
輸入: 16
輸出: true
示例 2:
輸入: 5
輸出: false
進階:
你能不使用循環或者遞歸來完成本題嗎?
方法一:
class Solution {
? ? public boolean isPowerOfFour(int num) {
? ? ? ? while(num%4==0)
? ? ? ? {
? ? ? ? ? ? num/=4;
? ? ? ? ? ? if(num==0||num==1)
? ? ? ? ? ? {
? ? ? ? ? ? ? ? break;
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? if(num==1)
? ? ? ? {
? ? ? ? ? ? return true;
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? return false;
? ? ? ? }
? ? }
}
方法二:位運算
4的冪都有一個特點,二進制位奇數位為1,偶數位為0
10101010101010101010101010101010,因此如果一個數和前面這個二進制數字進行&運算之后還是它本身,那么他一定奇數位為1,偶數位為0,
但是,如果這個數是20呢,比如10100,他進行&運算之后也是他本身
因此我們先進行一個判斷,判斷他是不是2的冪,如果是,那就說明只有最高位才為1,其他位都為0,之后再進行和10101010101010101010101010101010的&操作
而10101010101010101010101010101010的16進制寫法是0x55555555
class Solution {
? ? public boolean isPowerOfFour(int num) {
? ? ? ? if(num<=0)
? ? ? ? {
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? if((num&num-1)!=0)
? ? ? ? {
? ? ? ? ? ? return false;
? ? ? ? }
? ? ? ? if((num&0x55555555)==num)
? ? ? ? {
? ? ? ? ? ? ? ?return true;
? ? ? ? ?}
? ? ? ? return false;
? ? }
}
總結
以上是生活随笔為你收集整理的Leetcode--342. 4的幂的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Leetcode--1019. 链表中的
- 下一篇: k-Means——经典聚类算法实验(Ma