【Leetcode】取余/2的幂次方
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。
示例 1:
输入: num = 38
输出: 2
解释:
各位相加的过程为:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。
示例 2:
输入: num = 0
输出: 0
进阶:你可以不使用循环或者递归,在 O(1) 时间复杂度内解决这个问题吗?
代码1
递归:
class Solution {public int addDigits(int num) {int sum=0;if(num<=9){return num;}while(num>0){sum+=num%10;num/=10;}return addDigits(sum);}
}
代码2
循环迭代
class Solution {public int addDigits(int num) {while (num >= 10) {int sum = 0;while (num > 0) {sum += num % 10;num /= 10;}num = sum;}return num;}
}
给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。
如果存在一个整数 x 使得 n == 2x ,则认为 n 是 2 的幂次方。
代码1
class Solution {public boolean isPowerOfTwo(int n) {if (n <= 0) return false; // 2的幂一定是正数while (n % 2 == 0) {n /= 2; // 不断除以2}return n == 1; // 如果最终结果是1,说明是2的幂}
}
代码2
public boolean isPowerOfTwo(int n) {return n > 0 && (n & (n - 1)) == 0;}
说明:
&
运算符的完整详解
1. 基本定义
&
是 Java 中的 按位与(Bitwise AND) 运算符,它对两个整数的二进制形式的每一位进行逻辑与运算。
**2. 运算规则(逐位计算)**对于每一对二进制位:
0 & 0 = 0
0 & 1 = 0
1 & 0 = 0
1 & 1 = 1
3. 实际计算示例
假设 a = 5
,b = 3
,计算 a & b
:
a = 5 → 二进制 0101
b = 3 → 二进制 0011
a & b → 0001 (十进制 1)
4. 关键特性
清零特技:
x & 0 = 0
(任何数与 0
按位与,结果都是 0
)
保留特技:
x & 1 = x
(保留最低位,其他位清零)
5. 经典应用场景
(1) 判断奇偶
boolean isOdd = (n & 1) == 1;// true表示奇数
原理:二进制最后一位为 1
则是奇数。
(2) 检查2的幂
boolean isPowerOfTwo = (n & (n - 1)) == 0;
原理:2的幂的二进制只有1个1
。
(3) 取最低位的1
int lowestOne = n & (-n);
原理:补码特性保留最低位的1
。
位运算判断 2 的幂次方(超详细解析)
1. 核心思路
2 的幂次方的二进制表示有一个
关键特征:-所有 2 的幂次方的数,其二进制形式都是 1
后面跟着若干个 0
。
例如:
1
→ 0001
2
→ 0010
4
→ 0100
8
→ 1000
2. 关键位运算技巧
利用以下位运算性质:
n & (n - 1)
的作用:
去掉二进制数 n
的最低位 1
。
例如:
n = 8
(1000
),
n - 1 = 7
(0111
)
1000 & 0111 = 0000
(结果是 0
)
3. 判断条件
如果 n
是 2 的幂次方,则必须满足:
n > 0
(2 的幂次方一定是正数)。
n & (n - 1) == 0
(二进制中只能有 1 个 1
)。
4. 代码实现
public boolean isPowerOfTwo(int n) {return n > 0 && (n & (n - 1)) == 0;}
相关文章:
【Leetcode】取余/2的幂次方
给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。 示例 1: 输入: num 38 输出: 2 解释: 各位相加的过程为: 38 --> 3 8 --> 11 11 --> 1 1 --> 2 由于 2 是一位数,所以返回 2。 …...
程序代码篇---ESP32的数据采集
文章目录 前言 前言 本文简单介绍了ESP32可以怎样采集数据。...
系统架构设计(十三):虚拟机体系结构风格
概念 虚拟机(Virtual Machine)体系结构风格,是指将整个系统抽象为一台“虚拟机”,通过解释或模拟的方式运行应用程序。 它本质上提供了一种“平台中立”的运行环境,典型代表就是 Java 虚拟机(JVM…...
lvs-dr部署
实验准备: 准备4台设备,1台作为客户机,3台作为服务器,服务器中1台作为调度器,2台作为后端真实访问服务器。并关闭所有防火墙与核心防护。 systemctl stop firewalld setenforce 0 实验开始 调度器配置 yum -y ins…...
数据库blog2_数据结构与效率
🌿计算机中的数据————存储结构与逻辑结构 🍂存储结构(物理结构) 定义:存储结构是指数据在计算机存储器中的实际存储方式,由计算机硬件特性决定。它涉及到数据的物理位置和存储顺序。存储结构直接影响数…...
聊天室项目总结
已实现的功能点: 存在的问题: 1.没有实现有含金量的创新功能点 2.太过于依赖工具,不喜欢自己看文章总结对知其然而不知其所以然,自己的理解比较少,懒于去思考 3.太过于依赖他人,自己的想法有点少&#x…...
数据结构:二叉树一文详解
数据结构:二叉树一文详解 前言一、二叉树的基本概念与结构特性1.1 二叉树的定义1.2 二叉树的特殊类型1.3 二叉树的性质 二、二叉树的遍历方式2.1 前序遍历(Pre-order Traversal)2.2 中序遍历(In-order Traversal)2.3 后序遍历&…...
2025年- H28-Lc136- 24.两两交换链表中的节点(链表)---java版
1.题目描述 2.思路 cur指针要先放在虚拟头节点,才能去操作第一个数和第二个数 先判断偶数个节点,再判断奇数个节点,否则会犯空指针异常。 (1)如果节点是偶数个节点,只要满足curr.nextnull,就说…...
ubuntu18.04通过cuda_11.3_xxx.run安装失败,电脑黑屏解决办法
项目场景: ubuntu18.04跑DG-SLAM相关代码,安装lietorch包报错,需要用到GPU。 问题描述 跑代码需要cuda11.3,系统里面有另外一个版本,运行cuda_11.3_xxx.run,同时也选择了driver,安装成功后&am…...
Linux之基础IO
目录 一、理解 "文件" 1.1、狭义理解 1.2、广义理解 1.3、文件操作的归类认知 1.4、系统角度 二、回顾C语言接口 2.1、打开文件 2.2、写文件 2.3、读文件 2.4、stdin & stdout & stderr 2.6、打开文件的方式 三、系统文件I/O 3.1、一种传递标志…...
上位机知识篇---涂鸦智能云平台
文章目录 前言 前言 本文简单介绍了涂鸦智能云平台。...
InfluxDB 3 Core + Java 11 + Spring Boot:打造高效物联网数据平台
一、 引言:为什么选择InfluxDB 3? 项目背景: 在我们的隧道风机监控系统中,实时数据的采集、存储和高效查询是至关重要的核心需求。风机运行产生的振动、倾角、电流、温度等参数是典型的时序数据,具有高并发写入、数据…...
Kubernetes控制平面组件:Kubelet详解(七):容器网络接口 CNI
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
Pandas 构建并评价聚类模型② 第六章
构建并评价聚类模型 构建并评价聚类模型一、数据读取与准备(代码6 - 6部分)结果代码解析 二、Kmeans聚类(代码6 - 6部分)结果代码解析 三、数据降维可视化(代码6 - 6部分)结果代码解析 四、FMI评价…...
【simulink】IEEE33节点系统潮流分析模型
目录 主要内容 程序内容 2.1 33节点simulink模型一览 2.2 节点模型图 下载链接 主要内容 该仿真采用simulink模型对33节点网络进行模拟仿真,在simulink模型中定义了33节点系统的电阻、电抗、节点连接关系等参数,通过控制块来实现信号连接关系&…...
彻底解决docker代理配置与无法拉取镜像问题
为什么会有这篇文章? 博主在去年为部署dify研究了docker,最后也是成功部署,但是因为众所周知的原因,卡ziji脖子 ,所以期间遇到各种网络问题的报错,好在最后解决了. 但时隔一年,博主最近因为学习原因又一次使用docker,原本解决的问题却又没来由的出现,且和之前有很多不同(有时…...
Linux 安装 Unreal Engine
需要对在unreal engine官网进行绑定github账号,然后到unreal engine github仓库中进行下载对应的版本,并进行安装unreal engine官网 github地址...
tensorflow图像分类预测
tensorflow图像分类预测 CPU版本和GPU版本二选一 CPU版本 pip -m install --upgrade pippip install matplotlib pillow scikit-learnpip install tensorflow-intel2.18.0GPU版本 工具 miniconda 升级依赖库 conda update --all创建目录 mkdir gpu-tf进入目录 cd gpu-tf创建虚…...
C++数组详解:一维和多维数组的定义、初始化、访问与遍历
1. 引言 数组是C中最基础的数据结构之一,用于存储相同类型的元素的集合。它提供了高效的内存访问方式,适用于需要快速查找和遍历数据的场景。本文将全面介绍: 一维数组的定义、初始化与遍历多维数组(如二维数组)的定…...
linux下编写shell脚本一键编译源码
0 前言 进行linux应用层编程时,经常会使用重复的命令对源码进行编译,然后把编译生成的可执行文件拷贝到工作目录,操作非常繁琐且容易出错。本文编写一个简单的shell脚本一键编译源码。 1 linux下编写shell脚本一键编译源码 shell脚本如下&…...
安卓端互动娱乐房卡系统调试实录:从UI到协议的万字深拆(第一章)
前言:调房卡,不如修空调(但更费脑) 老实说,拿到这套安卓端互动组件源码的时候,我内心是拒绝的。不是因为它不好,而是太好了,目录规整、界面精美、逻辑还算清晰,唯一的问…...
【通用大模型】Serper API 详解:搜索引擎数据获取的核心工具
Serper API 详解:搜索引擎数据获取的核心工具 一、Serper API 的定义与核心功能二、技术架构与核心优势2.1 技术实现原理2.2 对比传统方案的突破性优势 三、典型应用场景与代码示例3.1 SEO 监控系统3.2 竞品广告分析 四、使用成本与配额策略五、开发者注意事项六、替…...
宝塔面板屏蔽垃圾搜索引擎蜘蛛和扫描工具的办法
首先进入宝塔面板,文件管理进入/www/server/nginx/conf目录,新建空白文件kill_bot.conf。然后将以下代码保存到当前文件中。 #禁止垃圾搜索引擎蜘蛛抓取if ($http_user_agent ~* "CheckMarkNetwork|Synapse|Nimbostratus-Bot|Dark|scraper|LMAO|Ha…...
【低成本STM32的T-BOX开发实战:高可靠的车联网解决方案】
基于STM32的车辆远程通信终端(T-BOX)开发实战:低成本高可靠的车联网解决方案 目录 引言:为什么需要T-BOX?系统总体设计:T-BOX的架构与核心功能硬件设计:STM32主控与关键模块解析 STM32F105VCT6…...
聚类算法K-means和Dbscan的对比
K-means和DBSCAN_dbscan和kmeans的区别-CSDN博客...
mysql的高可用
1. 环境准备 2台MySQL服务器(node1: 192.168.1.101,node2: 192.168.1.102)2台HAProxy Keepalived服务器(haproxy1: 192.168.1.103,haproxy2: 192.168.1.104)虚拟IP(VIP: 192.168.1.100&#x…...
vue3 elementplus tabs切换实现
Tabs 标签页 | Element Plus <template><!-- editableTabsValue 是当前tab 的 name --><el-tabsv-model"editableTabsValue"type"border-card"editableedit"handleTabsEdit"><!-- 这个是标签面板 面板数据 遍历 editableT…...
printf在c语言中代表什么(非常详细)
在C语言中,有三个函数可以用来向控制台(可以理解为显示器或者屏幕)输出数据,它们分别是: 输出函数说明用法演示puts()只能输出字符串,并且输出结束后会自动换行puts("C language is great");put…...
Linux梦开始的地方
1.概率 经过C语言,数据结构,C的学习我们现在要开始学习Linux的学习了。我们学习Linux是从四部分来进行的: 1.Linux初识,Linux环境,Linux指令,Linux开发环境。 2.Linux系统。 3.Linux网络 4.MySQL Lin…...
关于机器学习的实际案例
以下是一些机器学习的实际案例: 营销与销售领域 - 推荐引擎:亚马逊、网飞等网站根据用户的品味、浏览历史和购物车历史进行推荐。 - 个性化营销:营销人员使用机器学习联系将产品留在购物车或退出网站的用户,根据客户兴趣定制营销…...
Kubernetes控制平面组件:Kubelet详解(五):切换docker运行时为containerd
云原生学习路线导航页(持续更新中) kubernetes学习系列快捷链接 Kubernetes架构原则和对象设计(一)Kubernetes架构原则和对象设计(二)Kubernetes架构原则和对象设计(三)Kubernetes控…...
<前端小白> 前端网页知识点总结
HTML 标签 1. 标题标签 h1到h6 2. 段落标签 p 3. 换行 br 水平线 hr 4. 加粗 strong 倾斜 em 下划线 ins 删除 del 5. 图像标签 img src-图像的位置 alt- 图片加载失败显示的文字 替换文本 title--- 鼠标放到图片上显示的文字 提示…...
【Linux驱动】Linux 按键驱动开发指南
Linux 按键驱动开发指南 1、按键驱动开发基础 1.1. 按键驱动类型 Linux下的按键驱动主要有两种实现方式: 输入子系统驱动:最常用,通过input子系统上报按键事件 字符设备驱动:较少用,需要自己实现文件操作接口 1.…...
AI日报 - 2025年05月19日
🌟 今日概览 (60秒速览) ▎🤖 大模型前沿 | GPT-5传闻再起,将基于全新模型构建,与GPT-4彻底分离;Claude 3.7 Sonnet系统提示泄露,揭示其主动引导对话、多语言支持及安全新特性;研究指出直接复用…...
BUUCTF——ReadlezPHP
BUUCTF——ReadlezPHP 进入靶场 看了看框架和源码信息 没有什么可以利用的地方 爆破一下目录看看 结果只出来个index.php 看了一下Findsomthing 报了个路径 /time.php?source拼接访问一下 出了个php代码 <?php #error_reporting(0); class HelloPhp {public $a;pub…...
java集合相关的api-总结
简介 集合是存储数据的容器,集合相关的API提供了不同的数据结构,来满足不同的需求。这里是对常见集合API的使用场景和相关源码的一个总结,在实际开发中,如果不知道该选择什么集合,这篇文章也许可以参考一下。 集合相…...
FloodFill算法:洪水般的图像处理艺术
简单来说就是一场洪水(雨水)会把低洼的地方淹没 也就是一道题,你要找出所有为负数的连通块,对角线不能连通,所以上述图有两个 其实也很简单,就是你扫描的过程,发现一个负数,就以这…...
【开源分享】健康饮食管理系统(双端+论文)
💻技术栈 前后端分离项目,PC双端(管理端用户端) 后端:Javaspringboot 前端:vue 数据库:mysql 💡运行效果图 1. 管理端: 2. 用户端: 📕源码获…...
【图像生成大模型】CogVideoX-5b:开启文本到视频生成的新纪元
CogVideoX-5b:开启文本到视频生成的新纪元 项目背景与目标模型架构与技术亮点项目运行方式与执行步骤环境准备模型加载与推理量化推理 执行报错与问题解决内存不足模型加载失败生成质量不佳 相关论文信息总结 在人工智能领域,文本到视频生成技术一直是研…...
C++学习:六个月从基础到就业——C++20:协程(Coroutines)
C学习:六个月从基础到就业——C20:协程(Coroutines) 本文是我C学习之旅系列的第五十篇技术文章,也是第三阶段"现代C特性"的第十二篇,继续介绍C20引入的新特性,本篇重点是协程(Coroutines)。查看完整系列目录…...
【DAY22】 复习日
内容来自浙大疏锦行python打卡训练营 浙大疏锦行 仔细回顾一下之前21天的内容 作业: 自行学习参考如何使用kaggle平台,写下使用注意点,并对下述比赛提交代码 kaggle泰坦里克号人员生还预测...
tauri2项目使用sidcar嵌入可执行文件并使用命令行调用
Sidecar 是 Tauri 框架中的一个功能,允许你将现有的命令行程序(CLI)打包并分发到你的 Tauri 应用程序中。以下是它的主要作用和用法。集成命令行工具:将现有的 CLI 程序无缝集成到你的 Tauri 应用中。跨平台分发:确保你…...
选择合适的AI模型:解析Trae编辑器中的多款模型及其应用场景
在当今数字化时代,人工智能技术飞速发展,各种AI模型层出不穷,为人们的工作和生活带来了极大的便利。Trae编辑器作为一款集成了多种先进AI模型的工具,为用户提供了丰富的选择,以满足不同场景下的多样化需求。本文将深入…...
超越想象:利用MetaGPT打造高效的AI协作环境
前言 在人工智能迅速发展的今天,如何让多个大语言模型(LLM)高效协同工作成为关键挑战。MetaGPT 作为一种创新的多智能体框架,成功模拟了一个真实软件公司的运作流程,实现了从需求分析到代码实现的全流程自动化&#x…...
BOM知识点
BOM(Browser Object Model)即浏览器对象模型,是用于访问和操作浏览器窗口的编程接口。以下是一些BOM的知识点总结: 核心对象 • window:BOM的核心对象,代表浏览器窗口。它也是全局对象,所有全…...
IDE/IoT/搭建物联网(LiteOS)集成开发环境,基于 LiteOS Studio + GCC + JLink
文章目录 概述LiteOS Studio不推荐?安装和使用手册呢?HCIP实验的源码呢? 软件和依赖安装软件下载软件安装插件安装依赖工具-方案2依赖工具-方案1 工程配置打开或新建工程板卡配置组件配置编译器配置-gcc工具链编译器配置-Makefile脚本其他配置编译完成 …...
常见的 HTTP 接口(请求方法)
一:GET 作用:从服务器获取资源(查询数据)。特点: 请求参数通过 URL 传递(如https://api.example.com/users?id123),参数会显示在地址栏中。不修改服务器数据,属于幂等操…...
墨水屏显示模拟器程序解读
程序如下:出处https://github.com/tsl0922/EPD-nRF5?tabreadme-ov-file // GUI emulator for Windows // This code is a simple Windows GUI application that emulates the display of an e-paper device. #include <windows.h> #include <stdint.h>…...
【图像生成大模型】Step-Video-T2V:下一代文本到视频生成技术
Step-Video-T2V:下一代文本到视频生成技术 引言Step-Video-T2V 项目概述核心技术1. 视频变分自编码器(Video-VAE)2. 3D 全注意力扩散 Transformer(DiT w/ 3D Full Attention)3. 视频直接偏好优化(Video-DPO…...
【Java学习笔记】【第一阶段项目实践】房屋出租系统(面向对象版本)
房屋出租系统(面向对象版本) 整体思想:采用数组存储房屋信息,深刻体会面向对象的好处和过程 一、实现需求 (1)用户层 系统菜单显示 提示用户输入对应的数字选择功能 各个功能界面操作提示(底…...