[leetcode]231. Power of Two/326. Power of Three -- JavaScript 代码

港控/mmm° 2022-09-25 07:17 140阅读 0赞
  1. /** * @param {number} n * @return {boolean} */
  2. var isPowerOfTwo = function(n) {
  3. if(n===0){
  4. return false;
  5. }
  6. while((n>>1)>0){
  7. if((n & 1)==1){
  8. return false;
  9. }
  10. n = n>>1;
  11. }
  12. if(n!=1){
  13. return false;
  14. }
  15. return true;
  16. };

这是一道简单题,使用循环或者递归判断n是否能被2整除即可。
但是,这道题最好的方法是使用位运算,可以大大的提高代码效率。

除了位运算,第326题还提供了一种新的思路:使用Math.log函数:

  1. /** * @param {number} n * @return {boolean} */
  2. var isPowerOfThree = function(n) {
  3. if(n===0){
  4. return false;
  5. }
  6. var res = Math.log(n)/Math.log(3);
  7. var res_round = Math.round(res);
  8. if(Math.abs(res_round-res)<10e-15){
  9. return true;
  10. }
  11. return false;
  12. };

发表评论

表情:
评论列表 (有 0 条评论,140人围观)

还没有评论,来说两句吧...

相关阅读