博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
868. Binary Gap
阅读量:7009 次
发布时间:2019-06-28

本文共 1525 字,大约阅读时间需要 5 分钟。

  hot3.png

Description

Difficulty:Easy

Tag: Math

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: 22Output: 2Explanation: 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: 5Output: 2Explanation: 5 in binary is 0b101.

Example 3:

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

Example 4:

Input: 8Output: 0Explanation: 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

Solution

其实是一道数1的题,用 two pointers 解决

func binaryGap(N int) int {    max,pre,next := 0,0,1    for  ;N & 1 == 0 && N > 0; pre,N = pre+1, N >> 1{    }        for next,N = pre + 1,N>>1;N > 0; N>>=1 {        for N & 1 == 0{            next++            N >>=1        }        if next -pre > max {            max = next - pre        }        pre = next        next += 1    }        return max}

网友有一个更精妙简单的:

public int binaryGap(int N) {        int res = 0;        for (int d = -32; N > 0; N /= 2, d++)            if (N % 2 == 1) {                res = Math.max(res, d);                d = 0;            }        return res;    }

d 是两个1之间距离,碰到1之后d置0.

转载于:https://my.oschina.net/liufq/blog/2445090

你可能感兴趣的文章
hadoop mapreduce 计算平均气温的代码,绝对原创
查看>>
使用python实现后台系统的JWT认证(转)
查看>>
Count and Say
查看>>
PHP安全编程:register_globals的安全性 全局变量注册(转)
查看>>
SQL批处理与事务控制
查看>>
POJ - 2391 最大流
查看>>
WCF学习资料汇总
查看>>
15-Flutter移动电商实战-商品推荐区域制作
查看>>
LeetCode-Best Time to Buy and Sell Stock I&&II
查看>>
Java compiler level does not match解决方法(转)
查看>>
ROS初级教程 cmake cmakelist.txt 的编写教程
查看>>
Comparing Inline and Multi-Statement Table valued UDFs
查看>>
python 机器学习
查看>>
php如何控制客户端生成缓存
查看>>
不错的在线印章生成器网站
查看>>
Arduino控制LCD显示helloworld
查看>>
线程、任务和同步学习笔记(一)
查看>>
JavaScript this
查看>>
OpenJudge/Poj 1163 The Triangle
查看>>
POJ 3130 半平面交+模版改进
查看>>