231. 2 的幂简单
Posted pre_eminent
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了231. 2 的幂简单相关的知识,希望对你有一定的参考价值。
题目:
给你一个整数 n,请你判断该整数是否是 2 的幂次方。
如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2^x ,则认为 n 是 2 的幂次方。
PS: n 是整数,得出 x >= 0,得出 n >= 1
示例 1:
输入:n = 1
输出:true
解释:2^0 = 1
示例 2:
输入:n = 16
输出:true
解释:2^4 = 16
示例 3:
输入:n = 3
输出:false
示例 4:
输入:n = 4
输出:true
示例 5:
输入:n = 5
输出:false
提示:
-2^31 <= n <= 2^31 - 1
进阶:你能够不使用循环/递归解决此问题吗?
思路:
1. 枚举
2. n肯定为2^31的约数
3. n的二进制,只有1个1,并且是在首位
答案:
/**
* @param number n
* @return boolean
*/
var isPowerOfTwo = function(n)
// const bigNumber = Math.pow(2, 31);
const bigNumber = 1 << 31;
// n 是整数,得出 x >= 0,得出 n >= 1
return n >= 1 && bigNumber % n === 0;
;
var isPowerOfTwo_1 = function(n)
const set = new Set();
// n 是整数,得出 x >= 0,得出 n >= 1
for(let x = 0; x < 31; x++)
set.add(Math.pow(2, x));
return set.has(n);
;
以上是关于231. 2 的幂简单的主要内容,如果未能解决你的问题,请参考以下文章