leetcode 1689. Partitioning Into Minimum Number Of Deci-Binary Numbers(最少的“二进制数“个数)

这篇博客探讨了如何计算给定正整数n所需的最少二进制数(仅由0和1组成且无前导零)之和,以达到目标值。通过分析字符表示的十进制数,找到最大数字并确定所需最小数量的二进制数。核心思路是利用每个二进制数的最大位数等于其数值的特性来简化问题。
摘要由CSDN通过智能技术生成

A decimal number is called deci-binary if each of its digits is either 0 or 1 without any leading zeros. For example, 101 and 1100 are deci-binary, while 112 and 3001 are not.

Given a string n that represents a positive decimal integer, return the minimum number of positive deci-binary numbers needed so that they sum up to n.

Example 1:

Input: n = “32”
Output: 3
Explanation: 10 + 11 + 11 = 32
Example 2:

Input: n = “82734”
Output: 8
Example 3:

Input: n = “27346209830709182346”
Output: 9

字符串n代表了一个十进制数,问至少多少个“二进制数”相加能得到n,
这里的“二进制数”指的是只有0,1组成的十进制数。

思路:
问的是至少多少个"二进制数“相加能得到n,
而"二进制数“每位最大的数字是1,

所以只需要看n中最大的数字number,这个number至少是由number个1相加才能得到,
至于其他位,都比number小,可以通过凑0的方式解决。

public int minPartitions(String n) {
    int res = 0;
    
    for(int i = 0; i < n.length(); i++) {
        res = Math.max(res, n.charAt(i) - '0');
    }
    return res;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝羽飞鸟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值