跳到主要内容

231.2的幂

链接:231.2的幂
难度:Easy
标签:位运算、递归、数学
简介:给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

题解 1 - typescript

  • 编辑时间:2021-04-13
  • 执行用时:100ms
  • 内存消耗:39.2MB
  • 编程语言:typescript
  • 解法介绍:log 去对数后判断是否为整数。
function isPowerOfTwo(n: number): boolean {
return Number.isInteger(Math.log2(n));
}

题解 2 - typescript

  • 编辑时间:2021-04-13
  • 执行用时:108ms
  • 内存消耗:39.4MB
  • 编程语言:typescript
  • 解法介绍:判读数的二进制状态是否只存在一个 1。
function isPowerOfTwo(n: number): boolean {
return n <= 0
? false
: n
.toString(2)
.split('')
.filter(v => v === '1').length === 1;
}

题解 3 - typescript

  • 编辑时间:2021-05-31
  • 执行用时:96ms
  • 内存消耗:39.7MB
  • 编程语言:typescript
  • 解法介绍:利用原生函数判断。
function isPowerOfTwo(n: number): boolean {
const num = Math.log2(n);
return num === ~~num;
}

题解 4 - typescript

  • 编辑时间:2021-05-31
  • 执行用时:100ms
  • 内存消耗:39.6MB
  • 编程语言:typescript
  • 解法介绍:判断二进制上只有一个 1。
function isPowerOfTwo(n: number): boolean {
if (n < 0) return false;
let ans = 0;
while (n) {
if (n & 1) ans++;
n >>= 1;
}
return ans === 1;
}