当前位置: 首页 > news >正文

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网的介绍 点我跳转

3d2d1ea93cde4bcb92f79e59c300f9b7.pnglogarithm n.对数

 注意:

1.作用:log函数默认以e为底,则log(x)返回的是eq?log_e%20x的值.

2.参数x的重要提示:x必须大于0

VS2022运行

#include <math.h>
#include <stdio.h>
int main()
{double m = log(0);printf("%f", m);return 0;
}

运行结果

 ebddf4df40e4491a8f2f5f5cab0d1adf.png

-inf意为eq?-%5Cinfty(infinity)

 将log(0)改为log(-1)再运行

70a3bca3f6454e70b17aa34f77c86734.png

-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;
}

提交结果

fbb33f9ea5d745869c94fb28f2dfcd53.png

方法2:循环

bool isPowerOfTwo(int n) 
{if (n<=0)return false;while(n>1){if (n%2)return false;n/=2;}return true;
}

提交结果

23c1f4124d4948858823704d8712bb19.png

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 !条件;

 

提交结果

77c760602cd2474e9cf5c812f965430a.png

方法4:位运算lowbit

n&(-n) 直接获取 n 二进制表示的最低位的 1

代码

bool isPowerOfTwo(int n) 
{return n>0 && (n==(n&(-n)));
}

提交结果

649349c595944013a9772bc14a040a91.png

4.投机取巧的方法

发现n提供的范围为eq?-2%5E%7B31%7D%20%5Cleq%20n%20%5Cleq%202%5E%7B31%7D%20-%201恰为int范围,其中int范围中最大的2的幂数为0x40000000,用0x40000000%n==0

代码

bool isPowerOfTwo(int n) 
{return n>0 && (0x40000000%n==0);
}

提交结果

dbc98757bcb84b498d90a59329d076d2.png

 

相关文章:

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 的过程中&#xff0c;出现了 DB2 中为空字符串的字段&#xff0c;在插入到 Oracle 过程中实际插入的为 NULL &#xff0c;导致触发了非空校验而迁移失败 空字符串 ‘’ &#xff0c;即长度为0的字符串 搜索该问题后得知…...

「Mac畅玩鸿蒙与硬件50」UI互动应用篇27 - 水果掉落小游戏

本篇教程将带你实现一个水果掉落小游戏&#xff0c;掌握基本的动态交互逻辑和鸿蒙组件的使用&#xff0c;进一步了解事件处理与状态管理。 关键词 UI互动应用水果掉落状态管理动态交互游戏开发 一、功能说明 水果掉落小游戏包含以下交互功能&#xff1a; 随机生成水果&#…...

2.C语言基础:语句、表达式、注释与标准库简介

目录 1.语句2.表达式3.语句块4.空格5.注释6.printf()7.标准库 本篇原文为&#xff1a;C语言基础&#xff1a;语句、表达式、注释与标准库简介 更多C进阶、rust、python、逆向等等教程&#xff0c;可点击此链接查看&#xff1a;酷程网 1.语句 C 语言的代码由一行行语句&#…...

Python 基于 opencv 的人脸识别监控打卡系统(源码+部署)

1. 引言 今天&#xff0c;我们将基于 Python 的 OpenCV 库和 wxPython 框架&#xff0c;构建一个实用的 人脸识别考勤系统。这是一个适合大学生学习的实战项目&#xff0c;功能经过充分调试&#xff0c;确保运行稳定。该系统不仅能帮助你了解人脸识别技术的基本原理&#xff0…...

Maven的依赖管理

1. 依赖管理 依赖管理&#xff0c;可以将有关依赖项的所有信息放在共同的POM中&#xff0c;并对子POM中的工件进行更简单的引用。举个例子&#xff1a; 父POM <project>......<dependencyManagement><dependencies><dependency><groupId>gro…...

数据结构考前一天

线性表&#xff1a;矩阵&#xff0c;链表&#xff08;单链表必考&#xff09; 栈和队列&#xff1a;出入判断&#xff0c;括号匹配&#xff0c;中缀转后缀 字符串数组&#xff1a;模式匹配next&#xff0c;nextval数组&#xff0c;数组寻址&#xff0c;三角矩阵对应一维数组k…...

获取 Astro Bot AI 语音来增强您的游戏体验!

有很多用户尝试过Astro Bot&#xff0c;却被Astro Bot可爱的声音所吸引。您是否想知道如何使用 Astro Bot 语音来拨打恶作剧电话或用他的声音说话&#xff1f;如果您有&#xff0c;那么这篇文章适合您。我们将向您展示如何为 Astro Bot 提供逼真的 AI 声音并在在线对话中使用它…...

html5开发,js 在元素div id=img1的最前面插入一个图片

在 JavaScript 中&#xff0c;你可以使用 document.createElement 来创建一个新的图片元素&#xff0c;然后使用 document.getElementById 来获取目标 div 元素&#xff0c;并使用 appendChild 方法将新创建的图片元素插入到 div 的最前面。不过&#xff0c;appendChild 方法会…...

Elasticsearch Serverless中的数据流自动分片深度解析

Elasticsearch Serverless中的数据流自动分片深度解析 一、Elasticsearch Serverless概述 1. 什么是Elasticsearch Serverless Elasticsearch Serverless是一种云端全托管的Elasticsearch服务&#xff0c;它基于云原生Serverless技术架构&#xff0c;提供自动弹性和完全免运…...

2025考研江南大学复试科目控制综合(初试807自动控制原理)

​ 2025年全国硕士研究生招生考试江南大学考点 一年年的考研如期而至&#xff0c;我也变成了研二了&#xff0c;作为2次考研经历的学长&#xff0c;总是情不自禁地回想起自己的考研经历&#xff0c;我也会经常从那段经历中汲取力量。我能理解大多数考生考完后的的迷茫无助&…...

Elasticsearch分片数量是什么意思?

Elasticsearch中的分片&#xff08;Shard&#xff09;数量是一个重要概念&#xff0c;以下为你详细介绍它的含义及相关要点&#xff1a; ### 定义 分片是Elasticsearch将索引数据进行拆分的基本单元。简单来说&#xff0c;Elasticsearch会把一个索引的数据分割成多个较小的部分…...

PWN的知识之栈溢出

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

java.lang.Error: FFmpegKit failed to start on brand:

如果你使用FFmpegKit的时候遇到了这个问题&#xff1a; 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如何实现管理事务

目录 简介&#xff1a; 分类&#xff1a; 1.编程式事务管理&#xff1a; 2. 声明式事务管理&#xff1a; 3.事务传播和隔离级别&#xff1a; 配置 Spring 事务管理&#xff1a; 总结&#xff1a; 简介&#xff1a; Spring 通过事务管理器&#xff08;Transaction Manager…...

windows C#-接口中的索引器

可以在接口上声明索引器。 接口索引器的访问器与类索引器的访问器有所不同&#xff0c;差异如下&#xff1a; 接口访问器不使用修饰符。接口访问器通常没有正文。 访问器的用途是指示索引器为读写、只读还是只写。 可以为接口中定义的索引器提供实现&#xff0c;但这种情况非…...

Launcher3主页面加载显示流程分析

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

【读书笔记·VLSI电路设计方法解密】问题36:一个好的设计流程有哪些特点

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

C语言----共用体、枚举

目录 ​编辑 共用体 1. 定义 2. 格式 注意&#xff1a; 枚举 1. 定义&#xff1a; 2. 格式&#xff1a; 3. 说明&#xff1a; 面试题&#xff1a;枚举和宏定义区别&#xff1f; 共用体 1. 定义 不同数据类型的数据可以使用共同的存储区域&#xff0c;这种数据构造类…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

椭圆曲线密码学(ECC)

一、ECC算法概述 椭圆曲线密码学&#xff08;Elliptic Curve Cryptography&#xff09;是基于椭圆曲线数学理论的公钥密码系统&#xff0c;由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA&#xff0c;ECC在相同安全强度下密钥更短&#xff08;256位ECC ≈ 3072位RSA…...

工程地质软件市场:发展现状、趋势与策略建议

一、引言 在工程建设领域&#xff0c;准确把握地质条件是确保项目顺利推进和安全运营的关键。工程地质软件作为处理、分析、模拟和展示工程地质数据的重要工具&#xff0c;正发挥着日益重要的作用。它凭借强大的数据处理能力、三维建模功能、空间分析工具和可视化展示手段&…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

AspectJ 在 Android 中的完整使用指南

一、环境配置&#xff08;Gradle 7.0 适配&#xff09; 1. 项目级 build.gradle // 注意&#xff1a;沪江插件已停更&#xff0c;推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI&#xff0c;使用客户端或是内部自己搭建集成大模型的终端&#xff0c;加速与大型语言模型&#xff08;LLM&#xff09;的结合&#xff0c;同时使用检索增强生成&#xff08;Retrieval Augmented Generation &#…...

HarmonyOS运动开发:如何用mpchart绘制运动配速图表

##鸿蒙核心技术##运动开发##Sensor Service Kit&#xff08;传感器服务&#xff09;# 前言 在运动类应用中&#xff0c;运动数据的可视化是提升用户体验的重要环节。通过直观的图表展示运动过程中的关键数据&#xff0c;如配速、距离、卡路里消耗等&#xff0c;用户可以更清晰…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

搭建DNS域名解析服务器(正向解析资源文件)

正向解析资源文件 1&#xff09;准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2&#xff09;服务端安装软件&#xff1a;bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

Go语言多线程问题

打印零与奇偶数&#xff08;leetcode 1116&#xff09; 方法1&#xff1a;使用互斥锁和条件变量 package mainimport ("fmt""sync" )type ZeroEvenOdd struct {n intzeroMutex sync.MutexevenMutex sync.MutexoddMutex sync.Mutexcurrent int…...