1.题目
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例:
输入: 1输出: true解释: 2的0次方 = 1输入: 16输出: true解释: 2的4次方 = 16输入: 218输出: false
2.思路
先列一个最简单的,用2不断的乘2,然后与数字比较
public boolean isPowerOfTwo(int n) {if (n==1) {return true;}long a=1;//防止溢出while(true){a=a*2;if (a==n) {return true;}if (a>n) {return false;}}}
当然这里有更优雅的解法:
图片出自:https://leetcode-cn.com/problems/power-of-two/solution/power-of-two-er-jin-zhi-ji-jian-by-jyd/
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
