LeetCode 868 二进制间距[二进制] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 868 二进制间距[二进制] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
一道简简单单的二进制题目,从最后一位开始往前找,判断所有1之间的距离,用一个flag判断第一个1的位置,防止更新错误,代码如下:
class Solution
public:
int binaryGap(int n)
int dis = 0, cur = 0;
bool flag = false;
while(n)
if(n & 1)
if(flag) dis = max(dis, cur);
cur = 0;
flag = true;
cur ++;
n >>= 1;
return dis;
;
上面方法是直接统计距离的,还有一种记录位置的方法,代码如下:
class Solution
public:
int binaryGap(int n)
int dis = 0, index = 0, pre = -1;
while(n)
if(n & 1)
if(pre != -1) dis = max(dis, index - pre);
pre = index;
index ++;
n >>= 1;
return dis;
;
以上是关于LeetCode 868 二进制间距[二进制] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章
LeetCode 868. 二进制间距 / 398. 随机数索引(水塘抽样) / 883. 三维形体投影面积