题目链接:https://leetcode.cn/problems/partitioning-into-minimum-number-of-deci-binary-numbers/
题目大意:给出一个十进制数n
,求【和为n
的】【各个位只含0
或1
的十进制数】的最小个数。
思路:说实话没想到什么思路,不过看了前两个hint一下就想通了。n
的每个位都可以用该位是0
或1
的数字相加,随后将这些位拼起来即可得到所谓的deci-binary number。
比如504
,个位要4个1
,十位要1个0
,百位要5个1
。很显然至少要5个数字才行。那么答案即是n
的最大位,实际上说明了所有数都可以用9个以内的deci-binary number相加得到。代码很简单。
完整代码
class Solution {
public:
int minPartitions(string n) {
int ret = 0;
for (int i = 0; i < n.length(); i++) {
if (n[i] - '0' > ret)
ret = n[i] - '0';
}
return ret;
}
};