您的位置:首页 > 职场人生

LeetCode(65)-Power of Four

2016-04-19 12:50 351 查看

题目:

Given an integer (signed 32 bits), write a function to check whether it is a power of 4.

Example:
Given num = 16, return true. Given num = 5, return false.

Follow up: Could you solve it without loops/recursion?


思路:

题意是判断一个32位的符号整数是不是4的次方

对于2的次方的判断是n&(n-1)== 0

10 => 2

100 => 4

1000 => 8

10000 => 16

100000 => 32

1000000 => 64

10000000 => 128

100000000 => 256

1000000000 => 512

10000000000 => 1024

100000000000 => 2048

1000000000000 => 4096

10000000000000 => 8192

100000000000000 => 16384

由图中观察可以看出来,4的次方,1都在从右往左数的奇数位,1,3,5等

所有从2的次方移除4的次方,与上01010101010101010101010101010101,十六进制是0x555555555

代码:

public class Solution {
public boolean isPowerOfFour(int num) {
return num > 0 && (num&(num -1)) == 0 && (num & 0x55555555) != 0;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息