MENU

LeetCode342. 4 的幂

July 9, 2018 • Read: 3041 • LeetCode阅读设置

image这是上一道题 2 的幂的进阶,首先我们看和 2 的幂有什么不同。2 的幂有 1,2,4,8......,而 4 的幂有 1,4,16,64,也就是说少了 2,8,32......,我们再观察一下他们的二进制数

1:1
2:10
4:100
8:1000
16:10000

我们发现,满足 4 的幂的条件就是,在满足 2 的幂的前提下,二进制中 1 的位置必须是在奇数位。那么如何判断在奇数位?其实只要让其和 0101 0101 0101 0101 ... 这个二进制数对应的十进制做 & 即可,0101 转换成十进制是 5,那么最多的 0101 构成的十进制就是 0x55555555

  • class Solution {
  • public boolean isPowerOfFour(int num) {
  • if(num <= 0)
  • return false;
  • boolean a = (num & (num - 1)) == 0;
  • boolean b = (num & 0x55555555) != 0;
  • return a && b;
  • }
  • }
Last Modified: October 10, 2018
Archives Tip
QR Code for this page
Tipping QR Code