Given an integer, write a function to determine if it is a power of three.
Follow up: Could you do it without using any loop / recursion?
题目的意思是给定一个整数,判断它是否是3的幂。能否不用递归或者循环来解决这个问题?
方法1:写了个递归的版本。
class Solution {
public:
bool isPowerOfThree(int n) {
if(n==1)
return true;
if(n>=3 && n%3==0)
return isPowerOfThree(n/3);
return false;
}
};
方法2:我们可以找到INT_MAX以内的最大的3的幂=3intlog3INT_MAX = 1162261467,如果一个数是3的幂,那么它一定可以被1162261467整除。
class Solution {
public:
bool isPowerOfThree(int n) {
return (n>0 && (1162261467%n==0));
}
};
照顾好自己的身体,控制好自己的情绪,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。 同时请,关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法等内容。扫一扫下方关注我们的微信公众号。