231、2的幂
给定一个整数,编写一个函数来判断它是否是 2 的幂次方。
示例 1:
输入: 1
输出: true
解释: 2^0 = 1
示例 2:
输入: 16
输出: true
解释: 2^4 = 16
示例 3:
输入: 218
输出: false
难度:简单 题目地址:https://leetcode-cn.com/problems/power-of-two/
1、C语言代码:
bool isPowerOfTwo(int n){
return n > 0 && (n & (n - 1)) == 0;
}
解释:
- 若 n=2x 且 x 为自然数(即 n 为 2 的幂),则一定满足以下条件:
1、恒有 n & (n - 1) == 0,这是因为:
- n 二进制最高位为 1,其余所有位为 0;
- n−1 二进制最高位为 0,其余所有位为 1;
2、一定满足 n > 0。 - 因此,通过 n > 0 且 n & (n - 1) == 0 即可判定是否满足 n=2x 。
知识点回顾: 位运算的使用。
2、Java代码:
class Solution {
public boolean isPowerOfTwo(int n) {
return n > 0 && (n & (n - 1)) == 0;
}
}
解释: 类似于C语言的求解思路。
知识点回顾: 位运算的使用。
3、Python代码:
class Solution:
def isPowerOfTwo(self, n: int) -> bool:
return n > 0 and n & (n - 1) == 0
解释: 类似于C语言的求解思路。
知识点回顾: 位运算的使用。
4、JavaScript代码:
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfTwo = function(n) {
return n > 0 && (n & (n - 1)) == 0;
};
解释: 类似于C语言的求解思路。
知识点回顾: 位运算的使用。