力扣(LeetCode)4的幂 个人题解
2024-08-29 03:17:18
给定一个整数 (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;
}
}
最新文章
- 一道Twitter面试题
- IIS 7中 ISAPI 错误解决
- 【Android 】Service 全面总结
- DevExpress licenses.licx 的解决方法 z
- 从ramdisk根文件系统启动Linux成功
- Apache Commons DbUtils Problem
- HDU_1238——最大子串搜索
- rapidjson 使用教程
- Java并发编程:volatile 关键字
- <;Mastering KVM Virtualization>;:第二章 KVM内部原理
- Heritrix工具实现网络爬虫
- 【转】java中equal与==的区别 其中有个缓冲区,需要注意
- spring security oauth2 jwt 认证和资源分离的配置文件(java类配置版)
- Docker在Linux上运行NetCore系列(三)在Linux上使用Docker运行Asp.NetCore
- JDK8中HashMap
- lua 调用参数报错(a userdata value)
- C#中new的三种用法
- fabric知识梳理图解
- rock-paper-scissors
- XamarinEssentials教程设置首选项Preferences的值