【LeetCode】231. Power of Two 2的幂(Easy)(JAVA)
题目地址: https://leetcode.com/problems/power-of-two/
题目描述:
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 = 1
Example 2:
Input: n = 16
Output: true
Explanation: 2^4 = 16
Example 3:
Input: n = 3
Output: false
Example 4:
Input: n = 4
Output: true
Example 5:
Input: n = 5
Output: false
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 ms,击败了100.00% 的Java用户
内存消耗:35.6 MB,击败了62.16% 的Java用户
![](https://i-blog.csdnimg.cn/blog_migrate/6c56d31f951aece27c5faae608dfac2e.jpeg#pic_center)