Skip to content

Latest commit

 

History

History
68 lines (52 loc) · 993 Bytes

231.2的幂.md

File metadata and controls

68 lines (52 loc) · 993 Bytes

231. 2的幂

url

题目

给定一个整数,编写一个函数来判断它是否是 2 的幂次方。

示例

输入: 1
输出: true
解释: 2的0次方 = 1
输入: 16
输出: true
解释: 2的4次方 = 16
输入: 218
输出: false

方法

计算该数在二进制1的个数

  • 如果等于1,则是2的幂
  • 否则不是

code

js

let isPowerOfTwo = n => {
    return n > 0 && countOf1(n) === 1;
};
// 手写,不就是计算1的个数嘛
let countOf1 = n => {
    let cnt = 0;
    while (n !== 0) {
        cnt++;
        n &= (n - 1);
    }
    return cnt;
};
console.log(isPowerOfTwo(1));
console.log(isPowerOfTwo(16));
console.log(isPowerOfTwo(218));

go

func isPowerOfTwo(n int) bool {
	return n > 0 && bits.OnesCount32(uint32(n)) == 1
}

java

class Solution {
    public boolean isPowerOfTwo(int n) {
        return n > 0 && Integer.bitCount(n) == 1;
    }
}