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;
        }
    }
  • 相关阅读:
    201301 JAVA题目0-1级, 华为笔试题
    病毒传播, 美团笔试题
    OC基础 字符串
    IOS OC语言基础(一)类的创建
    pyautogui 鼠标精灵模拟登陆
    ajax hook注入
    aiohttp异步请求
    IOS自学教程大全
    提高python工具包
    Kafka与Flume区别
  • 原文地址:https://www.cnblogs.com/axiangcoding/p/10539448.html
Copyright © 2011-2022 走看看