LeetCode326-3的幂(很奇妙的水题)

Posted 朋友圈

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode326-3的幂(很奇妙的水题)相关的知识,希望对你有一定的参考价值。

2的幂,4的幂都做过了。

就是都手动写出来switch,得益与js,3也行。

 

复习两个js的语法

//将数字,转为3进制
//很奇怪吧,字符串才提供这个功能
var three = n.toString(3)



//将3进制的数字转换为10进制
//3进制的100,转换为10进制
parseInt(100,3)

 

 

因为可以将一些数字,转化为10进制。

那么三的幂,还是三进制的10,100,1000。把这些三进制数字转为10进制即可。

3的20次幂够大了,21次以及超越2的32次了。

var isPowerOfThree = function(n) {
    
    // var three = n.toString(3);
    
    // console.log(parseInt(10000,3));
    
    switch(n){
            
        case 3:
        case parseInt(10,3):
        case parseInt(100,3):
        case parseInt(1000,3):
        case parseInt(10000,3):
        case parseInt(100000,3):
        case parseInt(1000000,3):
        case parseInt(10000000,3):
        case parseInt(100000000,3):
        case parseInt(1000000000,3):
        case parseInt(10000000000,3):
        case parseInt(100000000000,3):
        case parseInt(1000000000000,3):
        case parseInt(10000000000000,3):
        case parseInt(100000000000000,3):
        case parseInt(1000000000000000,3):
        case parseInt(10000000000000000,3):
        case parseInt(100000000000000000,3):
        case parseInt(1000000000000000000,3):
        case parseInt(10000000000000000000,3):
        case parseInt(100000000000000000000,3):
        case parseInt(1000000000000000000000,3):
        case parseInt(10000000000000000000000,3):
        case parseInt(100000000000000000000000,3):
        case parseInt(1000000000000000000000000,3):
            return true;
        default:
            return false;
            
    }
    
};

 

这种方法挺shadiao的,而且3转10进制其实也是循环了吧。

 

也可以直接把3的1~20次的幂的值直接写出来判断,这样也差不多shadiao吧

 

排第一的方法

 

116xxxxxxx是最接近32位MAX值的3的幂

 

用他除以n即可。因为一个数如果是3的幂,肯定能被 3的20次整除吧。

 

以上是关于LeetCode326-3的幂(很奇妙的水题)的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 326 3的幂[数学 循环] HERODING的LeetCode之路

LeetCode 326. 3的幂 Power of Three

LeetCode 326. 3的幂 Power of Three

326-3的幂

Leetcode刷题100天—326. 3的幂(数学)—day47

Leetcode刷题100天—326. 3的幂(数学)—day47