zoukankan      html  css  js  c++  java
  • 力扣(LeetCode)4的幂 个人题解

    给定一个整数 (32 位有符号整数),请编写一个函数来判断它是否是 4 的幂次方。

    示例 1:

    输入: 16
    输出: true
    

    示例 2:

    输入: 5
    输出: false

    进阶:
    你能不使用循环或者递归来完成本题吗?

    这题本质上还是一个数学问题,考察的是二进制的一些操作。因为4的幂一定是2的幂,且二进制后,其1的位置一定出现在奇数位。

    如 4: 0100   16:10000

    所以思路很清晰了。首先判断是不是2的幂,然后再判断其1的位置是不是在奇数位。判断的方法是将这个数与 0x55555555 相与 。这样奇数位上一旦有1 ,结果必为非零。

    当然这种比较取巧的方法我是看了评论区才知道的。一般的做法是用移位来逐个判断,类似。

    代码如下:

    class Solution {
        public boolean isPowerOfFour(int num) {
           if (num<0 || (num & (num-1))!=0) 
               return false;
           int i=(num & 0x55555555);
           System.out.println(i);
           return i>1;
        }
    }
  • 相关阅读:
    典型格雷码-数学规律
    合并两个有序数组
    从fragment跳转到Activity
    fragment如何findviewby
    布局和位置
    preferencefragment
    AndroidStudio导入support-v13
    一些属性作用
    菜单menu
    ActionBar
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/10539448.html
Copyright © 2011-2022 走看看