zoukankan      html  css  js  c++  java
  • Leetcode868.Binary Gap二进制间距

    给定一个正整数 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

    class Solution {
    public:
        int binaryGap(int N) {
            if(N <= 1)
                return 0;
            vector<int> bits;
            while(N)
            {
                int temp = N % 2;
                bits.push_back(temp);
                N /= 2;
            }
            int len = bits.size();
            int first = -1;
            int second = -1;
            int MAX = 0;
            for(int i = 0; i < len; i++)
            {
                if(bits[i] == 1)
                {
                    if(first == -1)
                    {
                        first = i;
                    }
                    else if(second = -1)
                    {
                        second = i;
                        MAX = max(MAX, second - first);
                        second = -1;
                        first = i;
                    }
                }
            }
            return MAX;
        }
    };
  • 相关阅读:
    团队开发16
    小工具集合Alpha版使用说明
    团队开发15
    《编写有效用例》读后感3
    《编写有效用例》读后感2
    《编写有效用例》读后感1
    《架构漫谈》读后感3
    《架构漫谈》读后感2
    《架构漫谈》读后感1
    SOA设计与应用
  • 原文地址:https://www.cnblogs.com/lMonster81/p/10433933.html
Copyright © 2011-2022 走看看