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

leetcode-868-Binary Gap

题目描述:

Given a positive integer N, find and return the longest distance between two consecutive 1's in the binary representation of N.

If there aren't two consecutive 1's, return 0.

 

Example 1:

Input: 22
Output: 2
Explanation: 
22 in binary is 0b10110.
In the binary representation of 22, there are three ones, and two consecutive pairs of 1's.
The first consecutive pair of 1's have distance 2.
The second consecutive pair of 1's have distance 1.
The answer is the largest of these two distances, which is 2.

Example 2:

Input: 5
Output: 2
Explanation: 
5 in binary is 0b101.

Example 3:

Input: 6
Output: 1
Explanation: 
6 in binary is 0b110.

Example 4:

Input: 8
Output: 0
Explanation: 
8 in binary is 0b1000.
There aren't any consecutive pairs of 1's in the binary representation of 8, so we return 0.

 

Note:

  • 1 <= N <= 10^9

 

要完成的函数:

int binaryGap(int N) 

 

说明:

1、这道题给定一个整数N,要求在N的二进制表示中找到两个连续的1(中间可以包含0),比如22的二进制表示10110中,第一位的1和第三位的1是两个连续的1,第三位的1和第四位的1是两个连续的1。

要求找到两个连续的1的最长距离,返回该距离。

2、这道题很容易,由于整数N在计算机中就是以二进制存储的,所以我们进行位操作,读取出1的位置进行计算。

代码如下:(附详解)

    int binaryGap(int N) 
    {
        int i,j,count=0,res=0;
        while(N)//读取出第一个1的位置(从后面读起),存储在i中
        {
            count++;//count表示当前处理的是哪一位
            if(N&1==1)
            {
                i=count;
                N>>=1;
                break;
            }
            N>>=1;//N不断右移
        }
        while(N)//读取所有1的位置
        {
            count++;
            if(N&1==1)
            {
                j=count;//把新的1的位置记录在j中
                res=max(res,j-i);//更新res值,存储最长的距离
                i=j;//更新i值到当前位置
            }
            N>>=1;//N不断右移
        }
        return res;
    }

上述代码实测4ms,beats 99.64% of cpp submissions。

转载于:https://www.cnblogs.com/chenjx85/p/9332944.html

相关文章:

  • Spring类字段验证
  • 再谈GC3:GC调优思路与常用工具
  • LaTex in Markdown
  • css系列之关于字体的事
  • Linux 下 项目管理
  • 蛤车1:两个习题,群作用与覆叠空间,N-S定理
  • Vue学习第二天
  • 想熟悉PostgreSQL?这篇就够了
  • Kotlin Weekly 中文周报 —— 103
  • 洛谷P2765 魔术球问题(贪心 最大流)
  • Linux鸟哥(总)
  • JQuery 选择器与过滤器(随手笔记)
  • python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学
  • Django - 一对多数据示例
  • Apache 年度报告:Java 是项目开发使用最多的语言
  • 《剑指offer》分解让复杂问题更简单
  • 【Linux系统编程】快速查找errno错误码信息
  • 0x05 Python数据分析,Anaconda八斩刀
  • flutter的key在widget list的作用以及必要性
  • httpie使用详解
  • Java 最常见的 200+ 面试题:面试必备
  • Linux链接文件
  • RedisSerializer之JdkSerializationRedisSerializer分析
  • Spring核心 Bean的高级装配
  • Swoft 源码剖析 - 代码自动更新机制
  • XML已死 ?
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 关于Flux,Vuex,Redux的思考
  • 记一次删除Git记录中的大文件的过程
  • 理解在java “”i=i++;”所发生的事情
  • 聊聊redis的数据结构的应用
  • 入口文件开始,分析Vue源码实现
  • 数组大概知多少
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • 06-01 点餐小程序前台界面搭建
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 继 XDL 之后,阿里妈妈开源大规模分布式图表征学习框架 Euler ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​queue --- 一个同步的队列类​
  • # 再次尝试 连接失败_无线WiFi无法连接到网络怎么办【解决方法】
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (31)对象的克隆
  • (多级缓存)缓存同步
  • (二)换源+apt-get基础配置+搜狗拼音
  • (二)丶RabbitMQ的六大核心
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (转载)OpenStack Hacker养成指南
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .net Signalr 使用笔记
  • .NET 读取 JSON格式的数据
  • .Net程序帮助文档制作
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .Net组件程序设计之线程、并发管理(一)