3的幂 -- LeetCode -- 9.21
3 的幂
纯纯的思维题
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。
整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3^x
示例 1:
输入:n = 27 输出:true
示例 2:
输入:n = 0 输出:false
提示:
-2^31 <= n <= 2^31 - 1
进阶:
- 你能不使用循环或者递归来完成本题吗?
思路:
①:可以直接除 3 查看最后余数是不是 0 即可 ,简单,时间复杂度为 O(log3n);
②:3^19次方 为 int 型 3的幂 的最大值,所以说,只要一个数是 3 的幂次方,它必能被 3 ^ 19整除;
注意:这并不是快速判断 x 的幂的通用做法,当且仅当 x 为质数可用。
class Solution
{
public:
bool isPowerOfThree(int n)
{
int max_num = (int)pow(3, 19);
return n > 0 && max_num % n == 0;
}
};

浙公网安备 33010602011771号