326. 3的幂(Python)

题目

难度:★☆☆☆☆
类型:数学

给定一个整数,写一个函数来判断它是否是 3 的幂次方。

进阶:
你能不使用循环或者递归来完成本题吗?

示例

示例 1:
输入: 27
输出: true

示例 2:
输入: 0
输出: false

示例 3:
输入: 9
输出: true

示例 4:
输入: 45
输出: false

解答

这道题跟【题目231. 2的幂】属于同一个类型,递归和迭代写法可以直接参考该题目,这里为大家介绍一种时间和空间复杂度均为O(1)的解法。

我们知道,输入是32位有符号整数,范围是[-231~231-1],即[-2147483648~2147483647],在这个范围内3的幂是有限的,而且最大的是3^19=1162261467,这个最大的3的幂除以其他任何一个3的幂,余数一定是0,而除以任何一个不是3的幂的数,则余数一定不为零,根据这个原理,我们就可以解决3的幂的判别问题。

class Solution(object):
    def isPowerOfThree(self, n):
        """
        :type n: int
        :rtype: bool
        """
        return n > 0 and 3 ** 19 % n == 0

如有疑问或建议,欢迎评论区留言~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。