LeetCode——231. 2 的幂(Java)
2021/5/30 12:23:12
本文主要是介绍LeetCode——231. 2 的幂(Java),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
题目描述
题干: 给你一个整数 n,请你判断该整数是否是 2 的幂次方。 如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:n = 1 输出:true 解释:20 = 1 示例 2: 输入:n = 16 输出:true 解释:24 = 16 示例 3: 输入:n = 3 输出:false 示例 4: 输入:n = 4 输出:true 示例 5: 输入:n = 5 输出:false
题解思路
判断数字是不是2的幂,虽然题目下推荐我们不使用迭代或递归解决,但是我还是写了写 并且都超出了时间限制,所以主要讲讲其他方法,2最大幂的因子我一开始也觉得不靠谱 后来发现确实2的幂的因子确实都是2的幂,而位运算的方法就是需要发现一个规律 如果一个数字是2的幂,那他的二进制就只有一位是1,下面两种写法就见仁见智了
正确代码
class isPowerOfTwoSolution { static final int BIG = 1 << 30; //递归 public boolean isPowerOfTwo01(int n) { if (n == 1) { return true; } if (n < 0 || n % 2 != 0) { return false; } return isPowerOfTwo01(n / 2); } //迭代 public boolean isPowerOfTwo02(int n) { if (n < 0) { return false; } while (n % 2 == 0) { n /= 2; } return n == 1; } //最大二的幂的约数 public boolean isPowerOfTwo03(int n) { return (n > 0) && (BIG % n) == 0; } //位运算 public boolean isPowerOfTwo04(int n) { return (n > 0) && (n & (n - 1)) == 0; } //位运算2 public boolean isPowerOfTwo05(int n) { return (n > 0) && Integer.bitCount(n) == 1; } }
总结
结合位运算方法可以灵活解决很多算法问题,要善于发现规律和联系并牢记位运算的公式和规则 如果文章存在问题或者存在更好的题解,欢迎在评论区斧正和评论,各自努力,你我最高处见
这篇关于LeetCode——231. 2 的幂(Java)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-22项目:远程温湿度检测系统
- 2024-12-21《鸿蒙HarmonyOS应用开发从入门到精通(第2版)》简介
- 2024-12-21后台管理系统开发教程:新手入门全指南
- 2024-12-21后台开发教程:新手入门及实战指南
- 2024-12-21后台综合解决方案教程:新手入门指南
- 2024-12-21接口模块封装教程:新手必备指南
- 2024-12-21请求动作封装教程:新手必看指南
- 2024-12-21RBAC的权限教程:从入门到实践
- 2024-12-21登录鉴权实战:新手入门教程
- 2024-12-21动态权限实战入门指南