/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfTwo = function(n) {
if(n===
0){
return false;
}
while((n>>
1)>
0){
if((n &
1)==
1){
return false;
}
n = n>>
1;
}
if(n!=
1){
return false;
}
return true;
};
这是一道简单题,使用循环或者递归判断n是否能被2整除即可。 但是,这道题最好的方法是使用位运算,可以大大的提高代码效率。
除了位运算,第326题还提供了一种新的思路:使用Math.log函数:
/**
* @param {number} n
* @return {boolean}
*/
var isPowerOfThree = function(n) {
if(n===
0){
return false;
}
var res = Math.log(n)/Math.log(
3);
var res_round = Math.round(res);
if(Math.abs(res_round-res)<
10e-15){
return true;
}
return false;
};
转载请注明原文地址: https://ju.6miu.com/read-1309042.html