作者:mobiledu2502857893 | 来源:互联网 | 2023-05-19 05:34
题干分析:因为考虑到231题和326题的题型是类似的,以及解题方法也是相近的,所以小编将这两题结合起来给看官剖析。首先根据题干中所给的信息可以知道,这两题都是
题干分析:
因为考虑到231题和326题的题型是类似的,以及解题方法也是相近的,所以小编将这两题结合起来给看官剖析。
首先根据题干中所给的信息可以知道,这两题都是给一个确定的整数,然后用来确定是不是2或者3的幂,就是是不是2或者3连乘就可以得到所给的这个整数。
解题分析:
所以讲这两题抽取共同点即为所给一个数n,问是不是有a^x=n,其中x应为整数,所以这就变成一个有点考察数学中的幂函数的问题,我们知道在a=2或3的时候,这个幂函数是一个增函数,且值域为1到正无穷,所以可以知道当n<1,时返回假。在一想如果所给的数是奇数或者偶数分别对应2和3的话则肯定不是对应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%的对手。