难度级别:简单
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
输入: 1 输出: true 解释: 20 = 1
输入: 16 输出: true 解释: 24 = 16
输入: 218 输出: false
当整数n大于1时,对其进行迭代,通过对连续2取模判断是否等于0,当遇到不为0时,直接输出false。
const isPowerOfTwo = function(n) {
if (n === 0) return false
while(n > 1) {
if (n % 2 !== 0) return false
n /= 2
}
return true
};
const isPowerOfTwo = function(n) {
if (n < 1) return false
while(n % 2 == 0) n /= 2
return n === 1
};
通过n & (n - 1) 是否为0进行判断。因为一个数是2的幂次方,则这个2进制数必然只有一个1,若求x-1,则它的1位变为0,1后面的0位变为1,在求与运算,这是值为0。
const isPowerOfTwo = function(n) {
return n > 0 && (n & (n - 1)) === 0;
};
题目来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/power-of-two
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。