LeetCOde231&326详细分析并附求解代码

本文介绍如何判断一个整数是否为2或3的幂,并提供LeetCode第231题和第326题的具体解题思路及Java实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


题干分析:

    因为考虑到231题和326题的题型是类似的,以及解题方法也是相近的,所以小编将这两题结合起来给看官剖析。

    首先根据题干中所给的信息可以知道,这两题都是给一个确定的整数,然后用来确定是不是2或者3的幂,就是是不是2或者3连乘就可以得到所给的这个整数。

解题分析:

    所以讲这两题抽取共同点即为所给一个数n,问是不是有a^x=n,其中x应为整数,所以这就变成一个有点考察数学中的幂函数的问题,我们知道在a=23的时候,这个幂函数是一个增函数,且值域为1到正无穷,所以可以知道当n<1,时返回假。在一想如果所给的数是奇数或者偶数分别对应23的话则肯定不是对应2或者3的幂。但是如果所给的数对于第231题是偶数,则可以通过验证它是不是整数个2相乘所得的结果,所以可以通过如果一直是2的倍数的话就除2化成最简的形式,最后看所求出的数是不是1来判断该数是不是2的整数幂。对于第326题可以用类似的方法。

问题解决:

LeetCode上第231题:

    public class Solution {

        public boolean isPowerOfTwo(intn) {

          if(n<1){

               return false;

            }

            while(n%2==0){

               n/=2;

            }

            return n==1;

        }

    }

LeetCode上第326题:

    public class Solution {

        public boolean isPowerOfThree(intn) {

           if (n < 1) {

               return false;

            }

            while (n % 3== 0) {

               n /= 3;

            }

            return n ==1; 

        }

    }

本题总结:

1.   通过这个思想可以求解任何所给整数是不是某个质数的连乘结果;

2.   boolean型返回值的情况不用一定要返回true或者false,也可以返回一个判断语句来进行判断对错;

3.   最终第231题提交后击败了21.02%的对手,第326题提交后击败了92.80%的对手。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值