力扣——二进制间距(c++)——004

力扣——二进制间距(c++)——004,第1张

力扣——二进制间距(c++)——004

题目链接

思路:
  1. 输入的数据为十进制,先将其转为二进制倒序数组(倒序还是正序都不影响)
  2. 再找数组中相邻1最大的距离
class Solution {
public:
    int number[30];
    int length = 0;
    void change(int num){
        while (num / 2) {
            number[length] = num % 2;
            length++;
            num = num / 2;
        }
        number[length] = num;
        length++;
    }
    int binaryGap(int n) {
        change(n);
        int d=0;
        for(int i=length-1;i>=0;i--){
            if(number[i]==1){
                int j=i-1;
                for(;j>=0;j--){
                    if(number[j]==1){
                        if((i-j)>d){
                            d=i-j;
                        }
                        break;
                    }
                }
                i=j+1;
            }
        }
        return d;
    }
};
···

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5699387.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存