AcWing
  • 首页
  • 课程
  • 题库
  • 更多
    • 竞赛
    • 题解
    • 分享
    • 问答
    • 应用
    • 校园
  • 关闭
    历史记录
    清除记录
    猜你想搜
    AcWing热点
  • App
  • 登录/注册

LeetCode 326. Power of Three    原题链接    简单

作者: 作者的头像   yxc ,  2018-06-27 00:06:13 ,  所有人可见 ,  阅读 2089


3


2

题目描述

给定一个整数,请判断它是否是3的次幂。

进一步: 能否不使用递归和循环?

样例1

输入:27
输出:true

样例2

输入:0
输出:false

样例3

输入:9
输出:true

样例4

输入:45
输出:false

算法

(数论) $O(1)$

判断 $n$ 是否是3的次幂,即判断 $n$ 的质因子是否只有3。

整型范围内3的最大次幂是 $3^{19} = 1162261467$。则 $n$ 的质因子只有3,就等价于 $n$ 能整除 $1162261467$。

时间复杂度分析:只有一次取模运算,时间复杂度是 $O(1)$。

C++ 代码

class Solution {
public:
    bool isPowerOfThree(int n) {
        return n > 0 && 1162261467 % n == 0;
    }
};

10 评论


用户头像
extrovert   2019-03-19 12:25         踩      回复

两个typo:
(1)
Example 3:
Input: 9
Output: true
(2) 原题链接
https://leetcode.com/problems/power-of-three/

用户头像
yxc   2019-03-19 14:42         踩      回复

笔误,已改~

用户头像
yxc   2019-03-19 14:42         踩      回复

笔误,已改~


用户头像
小雨   2018-12-02 03:40         踩      回复

这个解法令人发指,我还在写while loop

用户头像
yxc   2018-12-02 17:56         踩      回复

这题和leetcode 231很像,参考了discuss里面的做法。

用户头像
小雨   2018-12-03 00:47    回复了 yxc 的评论         踩      回复

但是我后来发现,这个整除的解法和while loop 的解法运行时间差不多

用户头像
小雨   2018-12-03 00:47    回复了 yxc 的评论         踩      回复

多谢,那我去把231再写一下

用户头像
yxc   2018-12-03 13:58    回复了 小雨 的评论         踩      回复

可能是因为取模运算很慢。


用户头像
不鸣鸟   2018-11-27 21:02         踩      回复

厉害厉害,没想到还可以这么解,利用了整数的范围和3的幂次的性质

用户头像
yxc   2018-11-28 00:27         踩      回复

O(∩_∩)O哈哈


App 内打开
你确定删除吗?
1024
x

© 2018-2025 AcWing 版权所有  |  京ICP备2021015969号-2
用户协议  |  隐私政策  |  常见问题  |  联系我们
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标 qq图标
请输入绑定的邮箱地址
请输入注册信息