LeetCode-Day35 (C#) 326. 3的幂

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

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

示例 1:

输入:n = 27
输出:true

示例 2:

输入:n = 0
输出:false

示例 3:

输入:n = 9
输出:true

示例 4:

输入:n = 45
输出:false

提示:

  • -2<sup>31</sup> <= n <= 2<sup>31</sup> - 1

方法一:循环迭代
找出数字 n 是否是数字 b 的幂的一个简单方法是,n%3 只要余数为 0,就一直将 n 除以 b。

n = b^x ==b×b×…×b

因此,应该可以将 n 除以 b x 次,每次都有 0 的余数,最终结果是 1。

注意最后须要一个判断,检查 n == 1,否则 while 循环将永远不会结束。对于负数,该算法没有意义,因此我们也将包括该保护。


public class Solution {
    public bool IsPowerOfThree(int n) {
        if(n <  1) return false;
        if(n % 3 ==0) return IsPowerOfThree(n / 3);
        return n == 1;
    }
}
public class Solution {
    public bool IsPowerOfThree(int n) {
        if(n < 1) return false;
        while(n % 3 == 0) n /= 3;
        return n == 1;
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容