【Leetcode 每日一题】326. 3的幂 【简单】

给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。

整数 n 是 3 的幂次方需满足:存在整数 x 使得 n == 3x

示例 1:

输入:n = 27
输出:true
示例 2:

输入:n = 0
输出:false
示例 3:

输入:n = 9
输出:true
示例 4:

输入:n = 45
输出:false

提示:

-2^31 <= n <= 2^31 - 1

做法:可以使用循环或者递归,时间复杂度为O(logn),也可以使用3^19对数进行取模判断。

//做法1:试除法
class Solution {
public:
    bool isPowerOfThree(int n) {
        while (n && n % 3 == 0) {
            n /= 3;
        }
        return n == 1;
    }
};
//做法2:判断是否为最大的3的幂的次数
class Solution {
public:
    bool isPowerOfThree(int n) {
        return n > 0 && 1162261467 % n == 0;
    }
};
全部评论

相关推荐

1 收藏 评论
分享
牛客网
牛客企业服务