L27.【LeetCode笔记】2 的幂(五种解法)
目录
1.题目
2.自解
方法1:调用log函数
代码
提交结果
方法2:循环
提交结果
3.优解
方法3:位运算n & (n-1) ==0
代码
提交结果
方法4:位运算lowbit
代码
提交结果
4.投机取巧的方法
代码
提交结果
1.题目
https://leetcode.cn/problems/power-of-two/?envType=study-plan-v2&envId=primers-list
给你一个整数
n
,请你判断该整数是否是 2 的幂次方。如果是,返回true
;否则,返回false
。如果存在一个整数
x
使得n == 2x
,则认为n
是 2 的幂次方。
示例 1:
输入:n = 1 输出:true 解释:20 = 1示例 2:
输入:n = 16 输出:true 解释:24 = 16示例 3:
输入:n = 3 输出:false
提示:
-231 <= n <= 231 - 1
进阶:你能够不使用循环/递归解决此问题吗?
2.自解
方法1:调用log函数
cpliusplus网的介绍 点我跳转
logarithm n.对数
注意:
1.作用:log函数默认以e为底,则log(x)返回的是的值.
2.参数x的重要提示:x必须大于0
VS2022运行
#include <math.h>
#include <stdio.h>
int main()
{double m = log(0);printf("%f", m);return 0;
}
运行结果
-inf意为(infinity)
将log(0)改为log(-1)再运行
-nan(ind)表示计算结果为非数值(not a number)或无效数值(invalid)
代码
***"给你一个整数 n
"注意0,-1,-2等也是整数!!!!***
bool isPowerOfTwo(int n)
{if (n<=0)return 0;int x=(int)(log(n)/log(2)*1.0);//换底公式if (pow(2,x)==n)return true;elsereturn false;
}
提交结果
方法2:循环
bool isPowerOfTwo(int n)
{if (n<=0)return false;while(n>1){if (n%2)return false;n/=2;}return true;
}
提交结果
3.优解
2的幂的二进制数的特点:只有一个位为1,其余全为0
方法3:位运算n & (n-1) ==0
代码
如果n(n>0)为2的幂,一定满足 n & (n-1) ==0
n & (n-1) 直接将 n 二进制表示的最低位 1 移除,若为2的幂,则运算结果为0
bool isPowerOfTwo(int n)
{if (n>0 && (n & (n-1)) ==0)return true;elsereturn false;
}
其实可以直接返回逻辑运算的结果
bool isPowerOfTwo(int n)
{return n>0 && (n & (n-1)) ==0;
}
注意:
1.如果以后if+return可以写成像下面这样,而且返回类型为bool
if (条件)return true; elsereturn false;
可以简化为
return 条件;
2.如果反过来
if (条件)return false; elsereturn true;
可以简化为
return !条件;
提交结果
方法4:位运算lowbit
n&(-n) 直接获取 n 二进制表示的最低位的 1
代码
bool isPowerOfTwo(int n)
{return n>0 && (n==(n&(-n)));
}
提交结果
4.投机取巧的方法
发现n提供的范围为恰为int范围,其中int范围中最大的2的幂数为0x40000000,用0x40000000%n==0
代码
bool isPowerOfTwo(int n)
{return n>0 && (0x40000000%n==0);
}
提交结果
相关文章:

L27.【LeetCode笔记】2 的幂(五种解法)
目录 1.题目 2.自解 方法1:调用log函数 代码 提交结果 方法2:循环 提交结果 3.优解 方法3:位运算n & (n-1) 0 代码 提交结果 方法4:位运算lowbit 代码 提交结果 4.投机取巧的方法 代码 提交结果 1.题目 https://leetcode.cn/problems/power-of-two/?env…...

Pentaho Kettle迁移至Oracle的空字符串和NULL的问题处理,大坑!
一、问题说明 在使用 Kettle 将 DB2 数据迁移到 Oracle 的过程中,出现了 DB2 中为空字符串的字段,在插入到 Oracle 过程中实际插入的为 NULL ,导致触发了非空校验而迁移失败 空字符串 ‘’ ,即长度为0的字符串 搜索该问题后得知…...

「Mac畅玩鸿蒙与硬件50」UI互动应用篇27 - 水果掉落小游戏
本篇教程将带你实现一个水果掉落小游戏,掌握基本的动态交互逻辑和鸿蒙组件的使用,进一步了解事件处理与状态管理。 关键词 UI互动应用水果掉落状态管理动态交互游戏开发 一、功能说明 水果掉落小游戏包含以下交互功能: 随机生成水果&#…...
2.C语言基础:语句、表达式、注释与标准库简介
目录 1.语句2.表达式3.语句块4.空格5.注释6.printf()7.标准库 本篇原文为:C语言基础:语句、表达式、注释与标准库简介 更多C进阶、rust、python、逆向等等教程,可点击此链接查看:酷程网 1.语句 C 语言的代码由一行行语句&#…...

Python 基于 opencv 的人脸识别监控打卡系统(源码+部署)
1. 引言 今天,我们将基于 Python 的 OpenCV 库和 wxPython 框架,构建一个实用的 人脸识别考勤系统。这是一个适合大学生学习的实战项目,功能经过充分调试,确保运行稳定。该系统不仅能帮助你了解人脸识别技术的基本原理࿰…...

Maven的依赖管理
1. 依赖管理 依赖管理,可以将有关依赖项的所有信息放在共同的POM中,并对子POM中的工件进行更简单的引用。举个例子: 父POM <project>......<dependencyManagement><dependencies><dependency><groupId>gro…...
数据结构考前一天
线性表:矩阵,链表(单链表必考) 栈和队列:出入判断,括号匹配,中缀转后缀 字符串数组:模式匹配next,nextval数组,数组寻址,三角矩阵对应一维数组k…...

获取 Astro Bot AI 语音来增强您的游戏体验!
有很多用户尝试过Astro Bot,却被Astro Bot可爱的声音所吸引。您是否想知道如何使用 Astro Bot 语音来拨打恶作剧电话或用他的声音说话?如果您有,那么这篇文章适合您。我们将向您展示如何为 Astro Bot 提供逼真的 AI 声音并在在线对话中使用它…...
html5开发,js 在元素div id=img1的最前面插入一个图片
在 JavaScript 中,你可以使用 document.createElement 来创建一个新的图片元素,然后使用 document.getElementById 来获取目标 div 元素,并使用 appendChild 方法将新创建的图片元素插入到 div 的最前面。不过,appendChild 方法会…...
Elasticsearch Serverless中的数据流自动分片深度解析
Elasticsearch Serverless中的数据流自动分片深度解析 一、Elasticsearch Serverless概述 1. 什么是Elasticsearch Serverless Elasticsearch Serverless是一种云端全托管的Elasticsearch服务,它基于云原生Serverless技术架构,提供自动弹性和完全免运…...

2025考研江南大学复试科目控制综合(初试807自动控制原理)
2025年全国硕士研究生招生考试江南大学考点 一年年的考研如期而至,我也变成了研二了,作为2次考研经历的学长,总是情不自禁地回想起自己的考研经历,我也会经常从那段经历中汲取力量。我能理解大多数考生考完后的的迷茫无助&…...
Elasticsearch分片数量是什么意思?
Elasticsearch中的分片(Shard)数量是一个重要概念,以下为你详细介绍它的含义及相关要点: ### 定义 分片是Elasticsearch将索引数据进行拆分的基本单元。简单来说,Elasticsearch会把一个索引的数据分割成多个较小的部分…...

PWN的知识之栈溢出
栈溢出 什么是栈溢出? 栈溢出(Stack Overflow)是指在程序运行过程中,向栈中存放的数据量超过了栈的最大容量,从而导致程序出现异常行为的情况。可以比作一个箱子原本只能容纳一定数量的物品,如果强行往里…...

java.lang.Error: FFmpegKit failed to start on brand:
如果你使用FFmpegKit的时候遇到了这个问题: java.lang.Error: FFmpegKit failed to start on brand: Xiaomi, model: MI 8, device: dipper, api level: 29, abis: arm64-v8a armeabi-v7a armeabi, 32bit abis: armeabi-v7a armeabi, 64bit abis: arm64-v8a.at c…...

TCPDump参数详解及示例
TCPDump参数详解及示例 TCPDump参数详解TCPDump -G的示例TCPDump -i any -s 2048 -G 600 -p udp -Z root -n -X -tt -w %Y_%m%d_%H%M_%S.pcap &的含义TCPDump是一款强大的网络数据包截获分析工具,可以将网络中传送的数据包的完全截获下来提供分析。它支持针对网络层、协议…...
Spring如何实现管理事务
目录 简介: 分类: 1.编程式事务管理: 2. 声明式事务管理: 3.事务传播和隔离级别: 配置 Spring 事务管理: 总结: 简介: Spring 通过事务管理器(Transaction Manager…...
windows C#-接口中的索引器
可以在接口上声明索引器。 接口索引器的访问器与类索引器的访问器有所不同,差异如下: 接口访问器不使用修饰符。接口访问器通常没有正文。 访问器的用途是指示索引器为读写、只读还是只写。 可以为接口中定义的索引器提供实现,但这种情况非…...

Launcher3主页面加载显示流程分析
布局结构 抓取布局后,可以看到每个图标是一个DoubleShadowBubbleTextView,父布局是CellLayout、workspace。 我们可以在CellLayout添加子view打印出调用堆栈信息,可以整体上看页面加载显示流程。 主要类 Launcher.java:主界面&…...

【读书笔记·VLSI电路设计方法解密】问题36:一个好的设计流程有哪些特点
由于IC实现与不断演进的技术节点密切相关,且各种新问题迅速涌现,一个优秀的设计流程必须具备灵活性,以应对这些新挑战,而无需进行大规模调整。 与此同时,为了克服当今SoC实现领域中出现的众多问题,整个EDA行业正在高速运转。新工具正在加速涌现;因此,一个优秀的设计流…...

C语言----共用体、枚举
目录 编辑 共用体 1. 定义 2. 格式 注意: 枚举 1. 定义: 2. 格式: 3. 说明: 面试题:枚举和宏定义区别? 共用体 1. 定义 不同数据类型的数据可以使用共同的存储区域,这种数据构造类…...
[2025CVPR]DeepVideo-R1:基于难度感知回归GRPO的视频强化微调框架详解
突破视频大语言模型推理瓶颈,在多个视频基准上实现SOTA性能 一、核心问题与创新亮点 1.1 GRPO在视频任务中的两大挑战 安全措施依赖问题 GRPO使用min和clip函数限制策略更新幅度,导致: 梯度抑制:当新旧策略差异过大时梯度消失收敛困难:策略无法充分优化# 传统GRPO的梯…...

阿里云ACP云计算备考笔记 (5)——弹性伸缩
目录 第一章 概述 第二章 弹性伸缩简介 1、弹性伸缩 2、垂直伸缩 3、优势 4、应用场景 ① 无规律的业务量波动 ② 有规律的业务量波动 ③ 无明显业务量波动 ④ 混合型业务 ⑤ 消息通知 ⑥ 生命周期挂钩 ⑦ 自定义方式 ⑧ 滚的升级 5、使用限制 第三章 主要定义 …...

Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...

12.找到字符串中所有字母异位词
🧠 题目解析 题目描述: 给定两个字符串 s 和 p,找出 s 中所有 p 的字母异位词的起始索引。 返回的答案以数组形式表示。 字母异位词定义: 若两个字符串包含的字符种类和出现次数完全相同,顺序无所谓,则互为…...

IT供电系统绝缘监测及故障定位解决方案
随着新能源的快速发展,光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域,IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选,但在长期运行中,例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

基于PHP的连锁酒店管理系统
有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发,数据库mysql,前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...
Kafka主题运维全指南:从基础配置到故障处理
#作者:张桐瑞 文章目录 主题日常管理1. 修改主题分区。2. 修改主题级别参数。3. 变更副本数。4. 修改主题限速。5.主题分区迁移。6. 常见主题错误处理常见错误1:主题删除失败。常见错误2:__consumer_offsets占用太多的磁盘。 主题日常管理 …...
uniapp 实现腾讯云IM群文件上传下载功能
UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中,群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS,在uniapp中实现: 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...