题目链接
https://leetcode-cn.com/problems/power-of-two/
描述
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例
示例 1:
输入: 1
输出: true
解释: 20 = 1
示例 2:
输入: 16
输出: true
解释: 24 = 16
示例 3:
输入: 218
输出: false
初始代码模板
class Solution {
public boolean isPowerOfTwo(int n) {
}
}
代码
非正数直接排除,而正数如果是2的幂,那么二进制表示中只有一个1,通过n & (n - 1) 操作应当变为0,推荐文章:
https://labuladong.gitbook.io/algo/gao-pin-mian-shi-xi-lie/4.1-shu-xue-yun-suan-ji-qiao/chang-yong-de-wei-cao-zuo
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
}