阅读视图

发现新文章,点击刷新页面。

十_二进制

解题思路

把每一个数字分解成若干个1,竖着将所有分解的1排列起来,以最下方的数字作为基准,上方空白的地方全部补零。
即:行数即为最小数目。也即,字符串中最大的数字就是最少数目。
    接下来的任务就是找到字符串中最大的数字是多少,可在遍历数组时利用flag记录较大数字的值。

例如:                  3 2
    可分解成=>          1 1   ····第一行
                        1 1   ····第二行
                        1 0   ····第三行
上面的0和1可随意排列组合。

代码

###cpp

class Solution {
public:
    int minPartitions(string n) {
        int flag=n[0]-'0';
        for(int i=0;i<n.length();i++){
            if(flag<(n[i]-'0'))
            flag=n[i]-'0';
        }
        return flag;
    }
};
❌