326. 3 的幂 ——【Leetcode每日一题】
326. 3 的幂
给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true
;否则,返回 false
。
整数 n
是 3 的幂次方需满足:存在整数 x
使得 n==3xn == 3^xn==3x。
示例 1:
输入:n = 27
输出:true
示例 2:
输入:n = 0
输出:false
示例 3:
输入:n = 9
输出:true
示例 4:
输入:n = 45
输出:false
提示:
- −231<=n<=231−1-2^{31} <= n <= 2^{31} - 1−231<=n<=231−1
进阶: 你能不使用循环或者递归来完成本题吗?
思路:
法一:数学
一个不能再朴素的做法是将 n
对 3 进行试除
- 如果
n
小于等于0, 或者不能被 3 整除,一定不是 3 的幂;
法二(进阶):倍数 & 约数
在题目给定的 32 位有符号整数的范围内,最大的 3 的幂为 319=11622614673^{19} = 1162261467319=1162261467。
- 我们只需要判断 n 是否是 3193^{19}319 的 约数 即可。
- 也要判断是否
n
小于等于0,只要n
大于0时才有可能。
代码:(Java、C++)
法一:数学
Java
public class IsPowerOfThree {public static void main(String[] args) {// TODO Auto-generated method stubint n = 27;System.out.println(isPowerOfThree(n));}public static boolean isPowerOfThree(int n) {while(n != 1) {if(n % 3 != 0 || n <= 0) {return false;}n /= 3;}return true;}
}
C++
class Solution {
public:bool isPowerOfThree(int n) {while(n != 1) {if(n % 3 != 0 || n <= 0) {return false;}n /= 3;}return true;}
};
法二(进阶):倍数 & 约数
Java
class Solution {public boolean isPowerOfThree(int n) {return n > 0 && (1162261467 % n == 0);}
}
C++
class Solution {
public:bool isPowerOfThree(int n) {return n > 0 && (1162261467 % n == 0);}
};
运行结果:
复杂度分析:
- 时间复杂度:法一:O(log3n)O\left(\log _{3} n\right)O(log3n);法二:O(1)O(1)O(1)。
- 空间复杂度:O(1)O(1)O(1)。
题目来源:力扣。
放弃一件事很容易,每天能坚持一件事一定很酷,一起每日一题吧!
关注我 leetCode专栏,每日更新!
注: 如有不足,欢迎指正!
相关文章:

326. 3 的幂 ——【Leetcode每日一题】
326. 3 的幂 给定一个整数,写一个函数来判断它是否是 3 的幂次方。如果是,返回 true ;否则,返回 false 。 整数 n 是 3 的幂次方需满足:存在整数 x 使得 n3xn 3^xn3x。 示例 1: 输入:n 27 …...

UE4 Sequence学习
1.常用轨道 1.1 Camera轨道 Camera轨道可以理解为Camera Cuts轨道和Camera Actor轨道,一般点击Sequencer上的摄像机图标可以自动创建: Camera Cuts轨道,可以进行不同相机机位的切换,一般会随着Camera Actor轨道自动创建&#x…...

总结MySQL、Redis的优化措施与使用 mysql_upgrade升级数据结构
目录 一.MySQL数据库优化 二.Redis优化 三.MySQL创建测试账号报错 一.MySQL数据库优化 遵循MySQL层优化的五个原则: 减少数据访问,返回更少的数据,减少交互次数减少服务器CPU开销,利用更多资源。理解SQL优化原理并进行SQL优化,…...

C++11线程库
C11线程库 本质是对不同平台的线程库进行封装。因为windows和linux下各有自己的接口,这使得代码的可移植性比较差。C11中最重要的特性就是对线程进行支持了,使得C在并行编程时不需要依赖第三方库,而且在原子操作中还引入了原子类的概念。要使…...

智能化生产,提高效率!使用关键词采集工具助力企业数字化转型
关键词采集工具在企业数字化转型中的优势和作用进行阐述。 随着信息技术的不断发展,企业数字化转型已经成为了企业发展的必然趋势。 对于各种规模的企业而言,数字化转型可以提升企业的生产效率、降低成本、提高产品质量等方面带来更多的发展机遇。 而关…...

浅谈自动化测试用例创建和文档
通过自动创建测试用例和文档,探索自然语言处理 (NLP) 在革新软件测试方面的变革力量。 技术的快速发展导致对高效和有效的软件测试方法的需求增加。该领域最有前途的进步之一是自然语言处理 (NLP) 技术的集成。NLP 是人工智能(AI)的一个子集,专注于通过…...

[Java Web]AJAX Axios | 一种结合HTML来取代传统JSP的技术
⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章 ⭐作者主页:逐梦苍穹 ⭐所属专栏:Java Web 目录1、AJAX1.1、简介1.2、作用1.3、同步和异步1.4、代码实现1.4.1、服务端1.4.2、客户端1.4.2.1、完善…...

【C++】多态问答题
前言 本篇仅整理一些比较偏的多态的问答题 文章目录前言一. 内联与虚函数二. 静态函数与虚函数三. 构造函数与虚函数四. 虚函数与普通函数结束语一. 内联与虚函数 内联函数可以是虚函数吗? 首先我们看一下语法有没有问题 我们看到,程序成功运行了&#…...

【设计模式】适配器模式
一,定义适配器模式:结构型模式之一,适配器提供客户类需要的接口,适配器的实现就是把客户类的请求转化为对适配者的相应接口的调用。也就是说:当客户类调用适配器的方法时,在适配器类的内部将调用适配者类的方法&#x…...

跨域之CorsFilter
跨域之CorsFilter CorsFilter 是 Spring 框架提供的一个用于处理跨域请求的过滤器。在开发中,我们常常需要处理前端发来的跨域请求,CorsFilter 就可以帮助我们实现这一功能。 CorsFilter 主要用于设置跨域请求的响应头,以允许跨域请求能够被…...

STM32基于HAL工程读取DS1302时间数据
STM32基于HAL工程读取DS1302时间数据✨申明:本文章仅发表在CSDN网站,任何其他网站,未注明来源,见此内容均为盗链和爬取,请多多尊重和支持原创!🍁对于文中所提供的相关资源链接将作不定期更换。📌…...
《Effective Objective-C 2.0 》 阅读笔记 item10
第10条:在既有类中使用关联对象存放自定义数据 1. 关联对象 可以给某对象关联许多其他对象,这些对象通过“键”来区分,这就是关联对象。存储对象值的时候,可以指明“存储策略”(storage policy)ÿ…...

gpt3官网中文版-人工智能软件chat gpt安装
GPT-3(Generative Pre-trained Transformer 3)是一种自然语言处理模型,由OpenAI研发而成。它是GPT系列模型的第三代,也是目前最大、最强大的自然语言处理模型之一,集成了1750亿个参数,具有广泛的使用场景&a…...

工作常用、面试必问:Hive 窗口函数汇总
在SQL中有一类函数叫做聚合函数,例如sum()、avg()、max()等等,这类函数可以将多行数据按照规则聚集为一行,一般来讲聚集后的行数是要少于聚集前的行数的。但是有时我们想要既显示聚集前的数据,又要显示聚集后的数据,这…...

spring5(五):AOP操作
spring5(五):AOP操作前言一、代理模式1、场景模拟2、代理模式2.1 概念2.2 静态代理2.3 动态代理二、AOP概述1、什么是 AOP?2、相关术语3、作用三、AOP底层原理1、AOP 底层使用动态代理2、AOP(JDK 动态代理)2.1 编写 J…...
functional.partial
functional.partial__slots____new__中的cls, /是什么意思?functools.partial这个partial类有什么作用类中没有__init__函数Python 内置的 functools.partial 类的实现。这个类可以用来创建一个新的函数对象,该对象是对一个原有函数的参数进行了部分应用…...

C#缩放PDF文件
项目上有个功能需求:将原PDF进行缩放至原先的90%大小。 使用的是spire.pdf插件,但是官方文档上的缩放只是改变显示,最终文件其实没有缩放成功。遂找到了另外的方式进行重绘。 上代码: using Spire.Pdf; using Spire.Pdf.Graphi…...

【Java面试八股文宝典之MySQL篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day20
大家好,我是陶然同学,软件工程大三即将实习。认识我的朋友们知道,我是科班出身,学的还行,但是对面试掌握不够,所以我将用这100多天更新Java面试题🙃🙃。 不敢苟同,相信大…...

Nsight System的安装和使用
本地安装 官方网站,需要登录 选择Windows Host下载安装 服务器安装 选择Linux CLI .deb下载,上传到服务器之后,执行以下命令,默认会安装在/opt/nvidia/nsight-systems-cli/2023.2.1/target-linux-x64/,nsys在/usr/lo…...

Spring销毁的几种实现
有这3种方法,但是程序执行完成并没有打印出来。一定要手动close.手动执行后会调用如下逻辑:org.springframework.context.support.AbstractApplicationContext#doCloseorg.springframework.context.support.AbstractApplicationContext#destroyBeansorg.…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版分享
平时用 iPhone 的时候,难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵,或者买了二手 iPhone 却被原来的 iCloud 账号锁住,这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...
NPOI Excel用OLE对象的形式插入文件附件以及插入图片
static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

脑机新手指南(七):OpenBCI_GUI:从环境搭建到数据可视化(上)
一、OpenBCI_GUI 项目概述 (一)项目背景与目标 OpenBCI 是一个开源的脑电信号采集硬件平台,其配套的 OpenBCI_GUI 则是专为该硬件设计的图形化界面工具。对于研究人员、开发者和学生而言,首次接触 OpenBCI 设备时,往…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
Monorepo架构: Nx Cloud 扩展能力与缓存加速
借助 Nx Cloud 实现项目协同与加速构建 1 ) 缓存工作原理分析 在了解了本地缓存和远程缓存之后,我们来探究缓存是如何工作的。以计算文件的哈希串为例,若后续运行任务时文件哈希串未变,系统会直接使用对应的输出和制品文件。 2 …...

2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...

聚六亚甲基单胍盐酸盐市场深度解析:现状、挑战与机遇
根据 QYResearch 发布的市场报告显示,全球市场规模预计在 2031 年达到 9848 万美元,2025 - 2031 年期间年复合增长率(CAGR)为 3.7%。在竞争格局上,市场集中度较高,2024 年全球前十强厂商占据约 74.0% 的市场…...
Windows 下端口占用排查与释放全攻略
Windows 下端口占用排查与释放全攻略 在开发和运维过程中,经常会遇到端口被占用的问题(如 8080、3306 等常用端口)。本文将详细介绍如何通过命令行和图形化界面快速定位并释放被占用的端口,帮助你高效解决此类问题。 一、准…...

【Java多线程从青铜到王者】单例设计模式(八)
wait和sleep的区别 我们的wait也是提供了一个还有超时时间的版本,sleep也是可以指定时间的,也就是说时间一到就会解除阻塞,继续执行 wait和sleep都能被提前唤醒(虽然时间还没有到也可以提前唤醒),wait能被notify提前唤醒…...