十_二进制
解题思路
把每一个数字分解成若干个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;
}
};