Leetcode每日一题 —— 1689. 十-二进制数的最少数目

2026-04-11 13:571阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:
力扣 LeetCode

1689. 十-二进制数的最少数目 - 力扣(LeetCode)

1689. 十-二进制数的最少数目 - 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 。例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是。 给你一个表示十进制整数的字符串 n ,返回和为 n 的 十-二进制数 的最少数目。 示例 1: 输入:n = "32" 输出:3 解释:10 + 11 + 11 = 32 示例 2: 输入:n = "82734" 输出:8 示例 3: 输入:n...

今天白天得忙返校,凌晨先把每日一题做了,今天还好是简单题。

思路

0 开始到 n,每个数位每次操作只能 +1,我可以尽量每次往所有缺 1 的数位上放 1,因此最终的操作数目显然就是值最大的数位的值。

代码

class Solution { public: int minPartitions(string n) { // 观察发现这只和 n 中值最大的数位有关 int res = 0; for (char c : n) { res = max(res, (int)(c - '0')); } return res; } }; 网友解答:


--【壹】--:

脑筋急转弯题目,每位至少都要有个1叠起来,找最大的那位就行了 w

转set速度更快,不然会比较慢 w

class Solution: def minPartitions(self, n: str) -> int: return int(max(set(list(n))))


--【贰】--:

Screenshot_2026-03-01-01-25-45-953_com.android.chrome1080×2400 168 KB
终于有我也能一遍超100%的题了


--【叁】--:

这个set和list转换只是为了快一点,不然数字串长了max速度就会很慢了 w


--【肆】--:

其实可以直接int(max(n))


--【伍】--:

今天有事,幸好是简单题。

代码

public int minPartitions(String n) { int ans = 0; char max = '0'; for (char chr : n.toCharArray()) { if (chr > max) { max = chr; ans = max - '0'; } } return ans; }


--【陆】--:

今天是简单思维题


--【柒】--:

脑筋急转弯嘛这道题目。