【LeetCode】231. Power of Two 2的幂(Easy)(JAVA)
题目描述:
Given an integer n, return true if it is a power of two. Otherwise, return false.
An integer n is a power of two, if there exists an integer x such that n == 2^x.
Example 1:
Input: n = 1
Output: true
Explanation: 2^0 = 11
2
3
Example 2:
Input: n = 16
Output: true
Explanation: 2^4 = 161
2
3
Example 3:
Input: n = 3
Output: false1
2
Example 4:
Input: n = 4
Output: true1
2
Example 5:
Input: n = 5
Output: false1
2
Constraints:
-2^31 <= n <= 2^31 - 1
题目大意
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
解题方法
2 的幂次方的二进制可以表示成 100…000, 也就是除了首位是 1 其他都是 0
所以只要判断首位是 1, 然后去掉首位是 0 即可。(n & (n - 1)) 表示去除首位 1, 剩下的结果,如够剩下 0, 就表示是 2 的幂次方
note: 0 和小于 0 的是都不是 2 的幂次方
class Solution { public boolean isPowerOfTwo(int n) { if (n <= 0) return false; return (n & (n - 1)) == 0; }
}1
2
3
4
5
6
执行耗时:1 ms,击败了100.00% 的Java用户
内存消耗:35.6 MB,击败了62.16% 的Java用户
欢迎关注我的公众号,LeetCode 每日一题更新
文章来源: blog.csdn.net,作者:吴中乐,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/qq_16927853/article/details/110677154