写点什么

LeetCode 题解:231. 2 的幂,迭代,JavaScript,详细注释

用户头像
Lee Chen
关注
发布于: 2020 年 11 月 06 日
LeetCode题解:231. 2的幂,迭代,JavaScript,详细注释

原题链接:https://leetcode-cn.com/problems/power-of-two/



解题思路:



  1. 如果一个数是2的幂次方,表示如果将其不断除以2,最终结果为1。

  2. 如果一个数不是2的幂次方,那么将其不断除以2,其中间结果会出现一个不为1的奇数。

  3. 因此可以用迭代法,将其不断除以2,在中间结果为奇数时退出循环,并判断其结果是否为1,为1表示n是2的幂次方。



/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfTwo = function (n) {
// 当n=0时,Math.floor(n % 2)将始终为0,造成死循环,因此需要特殊处理
// 当n<0时,n必然不是2的幂次方
if (n <= 0) {
return false;
}
// 如果一个数为2的幂次方,代表它可以被2整除,并且它一定是偶数
// 因此如果它不断除以2,如果它是2的幂次方,则最终n会等于1
// 如果它不是2的幂次方,表示它不是2的幂次方
while (n % 2 === 0) {
// 每次循环都除以2
n = n / 2;
}
// 根据n最终是否等于1,判断它是否2的幂次方
return n === 1;
};



发布于: 2020 年 11 月 06 日阅读数: 20
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:231. 2的幂,迭代,JavaScript,详细注释