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. 三维形体投影面积

c++刷LeetCode

c++刷LeetCode

leetcode 记录

LeetCode.868-二进制距离(Binary Gap)

CodeForces 868D Huge Strings