首页 > 其他分享 >位运算求解LeetCode--3的幂

位运算求解LeetCode--3的幂

时间:2024-12-01 14:05:17浏览次数:6  
标签:求解 -- 复杂度 1162261467 int 因数 幂值 方法 LeetCode

3的幂

https://leetcode.cn/problems/power-of-three/description/

思路

方法1:如果一个数是3的幂,那么在int范围内,它一定是1162261467的因数(1162261467是int范围内3的最大幂,3的19次幂),所以只需判断该数字是否是1162261467的因数即可

方法2:如果并不知道int范围内3的最大幂值,可以使用循环求解。不断将该数字除以3,直到它不再是3的倍数,判断是否为1,若为1则是3的幂,不为1则不是

代码

方法1:

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

方法2: 

class Solution {
public:
    bool isPowerOfThree(int n) {
        if(n<=0) return false;
        while(n%3==0){
            n/=3;
        }
        return n==1;
    }
};

复杂度

方法1时间复杂度:O(1)

方法2时间复杂度:O(logn)

本题算法核心

在一定范围内,一个数字的所有幂值是该数字最大幂值的因数。

标签:求解,--,复杂度,1162261467,int,因数,幂值,方法,LeetCode
From: https://blog.csdn.net/m0_73694177/article/details/144142136

相关文章

  • 位运算求解LeetCode--数字范围按位与
    数字范围按位与https://leetcode.cn/problems/bitwise-and-of-numbers-range/description/思路由题目给定数据量是,约规模,可知时间复杂度O(n)是过不了的,也就是说不能使用从left到right遍历的方法来解(规模以上的O(n)就过不了)方法1:遍历n次不行,那就减少循环次数,可以让left不动......
  • 位运算求解LeetCode--颠倒二进制位
    颠倒二进制位https://leetcode.cn/problems/reverse-bits/description/思路32位太长,以8位为例,给定字符串abcdefgh,求颠倒后的字符串hgfedcba第一步-一一交换1v1badcfehg第二步-两两交换2v2dcbahgfe第三步-四四交换4v4hgfedcba完成!使用位运算第一步-1v1ab......
  • 异或求解LeetCode--只出现一次的数字
    只出现一次的数字136.只出现一次的数字-力扣(LeetCode)思路根据异或的性质:0^n=n和n^n=0以及异或满足交换律和结合律可知,一个数组中偶数个相同数字异或的结果为0,奇数个相同数字异或的结果为该数字,所以要找出现奇数次的数字,只需求一下整个数组异或的结果即可代码classSo......
  • 【Java毕业设计】基于Springcloud+SpringBoot+Vue的智慧养老系统
    源码获取:https://download.csdn.net/download/u011832806/89426620基于Springcloud+SpringBoot+Vue的智慧养老系统开发语言:Java数据库:MySQL技术:Springcloud+SpringBoot+MyBatis+Vue.js+Eureka+elementUI工具:IDEA/Ecilpse、Navicat、Maven系统演示视频:链接:https://pan.b......
  • 洛谷P1880 [NOI1995] 石子合并 题解
    此题解以纪念我终于差不多大概搞懂区间dp了(插个存档点,到时候忘了再回来看看)。P1880[NOI1995]石子合并题解在做这道题之前,可以看看P1775石子合并(弱化版)(一道题解帮你搞定两道题,多划算)。P1775石子合并(弱化版)形式化的题面一堆石头摆在你面前,让你把他们扔到一起,每次扔......
  • springcloud组件openFeign
    openFeign是什么?1、openFeign是个声明式WebServer客户端,使用openFeign让编写WebService客户端更加简单2、它的使用方法是定义一个服务接口然后在上面添加注解3、openFeign也支持可拔插式的编码器和解码器4、SpringCloud对openFeign进行了封装使其支持了SpringMvc标准注解......
  • Seata事务隔离
    本文目标:帮助用户明白使用Seata AT模式时,该如何正确实现事务隔离,防止脏读脏写。希望读者在阅读本文前,已阅读过seata官网中对AT模式的介绍,并且对数据库本地锁有所了解(例如,两个事务同时在对同一条记录做update时,只有拿到recordlock的事务才能更新成功,另一个事务在recordloc......
  • Seata使用Apollo作为配置中心
    预备工作​当您将apollo-client整合到您的Seata工程之前,请确保后台已经启动Apollo服务。如果您尚且不熟悉Apollo的基本使用的话,可先行参考 Apollo快速入门。建议使用Apollo 1.6.0 及以上的版本。快速上手​Seata融合Apollo配置中心的操作步骤非常简单,大致步骤......
  • C++编程:通过简单实现理解CyberRT的DataVisitor和DataDispatcher
    文章目录0.引言1.定义DataVisitor接口2.实现DataDispatcher3.创建具体的DataVisitor4.类关系图5.测试示例6.编译和运行0.引言本文简单实现类似CyberRT的DataVisitor和DataDispatcher,使得数据能够被分发给多个订阅者(访客)。1.定义DataVisitor接......
  • 计算机基础与程序设计第十周总结
    学期(如2024-2025-1)学号(如:20241300)《计算机基础与程序设计》第X周学习总结作业信息这个作业属于哪个课程https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP/homework/13273这个作......