LeetCode|868.二进制间距

Leetcode每日一题868. 二进制间距 阅读详情

LeetCode习题答案汇总

题目:
给定一个正整数 N,找到并返回 N 的二进制表示中两个相邻 1 之间的最长距离。

如果没有两个相邻的 1,返回 0 。

示例 1:

输入:22
输出:2
解释:
22 的二进制是 0b10110 。
在 22 的二进制表示中,有三个 1,组成两对相邻的 1 。
第一对相邻的 1 中,两个 1 之间的距离为 2 。
第二对相邻的 1 中,两个 1 之间的距离为 1 。
答案取两个距离之中最大的,也就是 2 。
示例 2:

输入:5
输出:2
解释:
5 的二进制是 0b101 。
示例 3:

输入:6
输出:1
解释:
6 的二进制是 0b110 。
示例 4:

输入:8
输出:0
解释:
8 的二进制是 0b1000 。
在 8 的二进制表示中没有相邻的两个 1,所以返回 0 。

提示:

1 <= N <= 10^9

分析:

  • 记录二进制下1所在的位置
  • 要找到二进制表示中连续的 1 的最长距离,就是找到数组中相邻元素差的最大值

代码:

class Solution:
    def binaryGap(self, N: int) -> int:
        res = '{:b}'.format(N) # 转成二进制
        result = []
        count = 0
        for i in res[::-1]: 
            if i == '1':
                result.append(count)
            count += 1
        if len(result) < 2 :return 0
        return max(result[i+1] - result[i] for i in range(len(result)-1))

结果:
在这里插入图片描述

LeetCode 868:二进制间距超详细题解 摘要: LeetCode 868题要求计算正整数n的二进制表示中相邻1之间的最长距离。核心思路是遍历二进制位,记录1的位置并计算相邻距离。提供两种解法: 基础版:存储所有1的位置,计算相邻差值取最大值,空间复杂度O(k)。 优化版:单次遍历,动态记录上一个1的位置,空间复杂度O(1)。两种方法时间复杂度均为O(log n),适用于大数场景(如n=10^9)。代码示例包含详细注释,并通过案例验证正确性,如n=22(输出2)、n=8(输出0)。该题考察位运算和遍历技巧,适合面试准备。 阅读详情

相关推荐

OpenClaw 完整命令文档(2026.3.13 最新版)

本文档为OpenClaw 2026.3.13通用版使用指南,包含核心命令大全。主要内容包括:1)基础安装/升级/卸载命令;2)ClawHub扩展安装命令(支持飞书/钉钉/企微等平台连接);3)Skills技能安装命令(实现聊天/搜索/记忆等功能);4)飞书机器人授权与配对命令;5)启动运行与配置检查命令;6)工作区与记忆管理命令;7)插件安全设置命令;8)调试日志命令;9)飞书机器人一键部署简化流程。文档特别强调飞书机器人部署需feishu扩展+对应技能+用户授权的完整配置,所有命令均需在终端执行,安装后需

MKliudan的专栏 1295

【每日一题C】二进制数字1间距

C语言、二进制数字1间距

335

LSF实践专题(15):LSF队列优先级以及抢占功能初探

在LSF暂停作业时,会向作业发送一个SIGTSTP信号,并且将作业状态变成SSUSP(system suspend),表示被系统暂停,这时,最好是作业的应用能够捕获和处理SIGTSTP信号,否则,即使在LSF中,作业会被认为暂停了,并且释放了slots资源,但是在实际OS中,作业进程仍然在继续,并且不会释放CPU等计算资源。是指LSF自动将低优先级作业暂停(suspend),将空余出来的资源交给高优先级队列中的作业使用,等到高优先级队列的作业结束后,再将被暂停的作业恢复(resume)并继续运行。

richycn的博客 1921

《六月集训》第十天——位运算

会和不会一字只差,这一个字代表多少东西呢

qq_40864532的博客 758

快速谱峭度算法解析

最近一直在研究振动信号的最优解调带宽寻找方法,而快速谱峭度算法是最常见的一种,因此本篇文章准备对该算法做个深入解析,也相当于自己的学习记录了。本篇文章对快速谱峭度算法做了一个较为详细的介绍,实际上就是通过多组滤波器将信号分解到不同的频段,再计算每个频段的峭度,从而找到值最大的频段,进一步地我们也可以选取其他指标作为频段的选择,以便更好地找到振动信号中的故障信息。

qq1234534215的博客 2745

遥感影像建筑物变化检测

遥感影像建筑物变化检测

yilvyangguang520的博客 423

LeetCode——868. 二进制间距

868. 二进制间距题目描述答案我的代码官方答案位运算 题目描述 给定一个正整数 n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1,返回 0 。 如果只有 0 将两个 1 分隔开(可能不存在 0 ),则认为这两个 1 彼此 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如,“1001” 中的两个 1 的距离为 3 。 示例 1: 输入:n = 22 输出:2 解释:22 的二进制是 “10110” 。 在 22 的二进制表示中,有三个 1,组

允诺@晴天的博客 3401

YOLOv8改进策略【Conv和Transformer】| CVPR-2023 BiFormer 稀疏自注意力,减少内存占用

本文记录的是利用双级路由注意力机制优化的目标检测网络模型。传统的复杂度高,随着输入空间分辨率增加,计算量呈平方增长,导致严重的可扩展性问题。而本文所使用的在获取全局信息的同时,通过区域到区域路由和令牌到令牌注意力的合理设计,减少了不必要的计算量。BiFormer: Vision Transformer with Bi-Level Routing Attention采用四阶段金字塔结构,与一些先进的视觉Transformer类似。在每个阶段,首先使用重叠的补丁嵌入(在第一阶段)或补丁合并模块(在第二到第四阶段

Limiiiing的博客 614

【Leetcode】每日一题:二进制间距

二进制间距 给定一个正整数 n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1,返回 0 。 如果只有 0 将两个 1 分隔开(可能不存在 0 ),则认为这两个 1 彼此 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如,“1001” 中的两个 1 的距离为 3 。 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/binary-gap 著作权归领扣网络所有。商业转载请联系官方授权,非商业转

qq_44459787的博客 754

基于MATLAB的Hough变换指针式仪表识别

综上所述,本文介绍了如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。通过图像预处理、Hough变换和直线提取,我们可以准确地检测指针的位置,并进一步进行仪表读数。本文将介绍如何使用MATLAB中的Hough变换算法来实现指针式仪表的自动识别和读数。在指针式仪表识别中,我们可以利用Hough变换来检测仪表盘上的指针。以上是基于MATLAB的Hough变换指针式仪表识别的详细步骤和源代码示例。根据指针在仪表盘上的位置,我们可以进行角度计算或使用其他技术来获取准确的读数。

techDM的博客 466

AMBA-CHI协议详解(三)

Write Transactions、Atomic transactions、 Stash transactions、 Dataless transactions的等各个事务的事务流。

Crazzy_M的博客 3182

【3】leetcode note

868. 二进制间距 762. 二进制表示中质数个计算置位

个人学习笔记 325

LLaMA Factory添加新模型template的实战解析

本文主要介绍了LLaMA Factory添加新模型template的实战解析,希望对使用大语言模型的同学们有所帮助。 文章目录 1. 前言 2. 实战解析 2.1 检查代码 2.2 修改代码

herosunly的博客 19万+

​力扣解法汇总868-二进制间距

目录链接: 力扣编程题-解法汇总_分享+记录-优快云博客 GitHub同步刷题项目: https://github.com/September26/java-algorithms 原题链接:力扣 描述: 给定一个正整数 n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1,返回 0 。 如果只有 0 将两个 1 分隔开(可能不存在 0 ),则认为这两个 1 彼此 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如,"10

分享+记录 3065

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

leetcode 868. 二进制间距

我们可以计算当前位的索引与上一个为1的位的索引之间的距离,并将其与之前记录的最大距离进行比较和更新。两个 1 之间的距离是它们的二进制表示中位置的绝对差。maxDist用于记录最大距离,dist用于临时存储两个相邻1之间的距离,prevBit用于记录上一个为1的位的索引。在 22 的二进制表示中,有三个 1,组成两对相邻的 1。用两个变量储存1的位置,再用一个变量储存最大的两个1的位置差。第一对相邻的 1 中,两个 1 之间的距离为 2。第二对相邻的 1 中,两个 1 之间的距离为 1。

dengjiayue的博客 507

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

LeetCode 868. 二进制间距

本题是二进制位运算的基础题,主要考察对二进制表示的遍历和相邻 1 之间距离的计算。掌握这两种解法后,可以轻松应对类似的位操作问题。

qq_46121420的博客 927

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LeetCode 868.二进制间距:位运算

LeetCode 868.二进制间距:位运算 给定一个正整数 n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1,返回 0 。 如果只有 0 将两个 1 分隔开(可能不存在 0 ),则认为这两个 1 彼此 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如,"1001" 中的两个 1 的距离为 3 。

<font color="Pink">Tisfy的博客</font> 648

LeetCode刷题之868. 二进制间距

LeetCode刷题之868. 二进制间距 我不知道将去向何方,但我已在路上! 时光匆匆,虽未曾谋面,却相遇于斯,实在是莫大的缘分,感谢您的到访 ! 题目: 给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。 如果没有两个连续的 1,返回 0 。 示例: 示例 1: 输入:22 输出:2 解释: 22 的二进制是 0b10110 。 在 22 的二进制表示中,有三个 1,组成两对连续的 1 。 第一对连续的 1 中,两个 1 之间的距离为

胡萝卜 287

leetcode 算法题868 (简单226) 二进制间距

leetcode 算法题868 (简单226) 二进制间距 题目介绍 给定一个正整数 N, 找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。 如果没有两个连续的 1,返回 0 。 示例 输入:22 输出:2 解释:22 的二进制是 0b10110 。在 22 的二进制表示中,有三个 1,组成两对连续的 1 。第一对连续的 1 中,两个 1 之间的距离为 2 。第二对连续的...

FYuu95100的博客 563

Leetcode 868.二进制间距(Binary Gap)

Leetcode 868.二进制间距 1 题目描述(Leetcode题目链接)   给定一个正整数 N,找到并返回 N 的二进制表示中两个连续的 1 之间的最长距离。 如果没有两个连续的 1,返回 0 。 输入:22 输出:2 解释: 22 的二进制是 0b10110 。 在 22 的二进制表示中,有三个 1,组成两对连续的 1 。 第一对连续的 1 中,两个 1 之间的距离为 2 。 第二对连续...

qq_39378221的博客 282

【LeetCode868】二进制间距

【代码】【LeetCode868】二进制间距。

2501_92450549的博客 45

python-leetcode-868. 二进制间距

转换为二进制字符串,然后遍历其字符,记录相邻。的二进制表示中没有相邻的。

Lucy_wzw的博客 501

LeetCode 868.二进制间距

位运算基础题:二进制间距

qq_57349657的博客 362

leetcode 868. Binary Gap 二进制间距-耗时100

邹九的个人博客 362

#力扣 LeetCode868. 二进制间距 @FDDLC

题目描述: https://leetcode-cn.com/problems/binary-gap/ Java代码: class Solution { //1 <= N <= 10^9 public int binaryGap(int n) { //给定一个正整数 n int ans=0,last1=32,cnt=0; for(;n!=0;n=n>>1,cnt++){ if((n&1)==1){ .

LiuXingchang的博客 313
上一篇: LeetCode|867.转置矩阵
下一篇: LeetCode|888.公平的糖果交换
xiao黄
xiao黄 优质创作者: 人工智能技术领域 优质创作者: 人工智能技术领域 领域专家: 数据科学与机器学习技术领域 领域专家: 数据科学与机器学习技术领域
博客等级 码龄8年 1万+粉丝 250原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiao黄

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值