至少有一位重复数字--动态规划

这篇博客主要介绍了LeetCode 1012题目的解法,即计算小于等于N且至少有一位重复数字的正整数个数。通过反向思维,找出所有没有重复数字的数字个数,然后用总数减去这个数量。文章详细解释了如何通过高位和低位的重新组合来确定不重复数字的个数,并通过代码实现动态规划的解决方案,同时处理了首位不能为0的情况,以及如何剔除重复数字的技巧。
摘要由CSDN通过智能技术生成

leetcode 1012

至少有一位重复的数字

题目描述:给定正整数 N,返回小于等于 N 且具有至少 1 位重复数字的正整数的个数。

示例1:

输入:20
输出:1
解释:具有至少 1 位重复数字的正数(<= 20)只有 11 。

示例2:

输入:100
输出:10
解释:具有至少 1 位重复数字的正数(<= 100)有 11,22,33,44,55,66,77,88,99 和 100 。

示例3:

输入:1000
输出:262

提示:

1 <= N <=10^9

思路:题目要我们找出有重复数字的数字个数,反向思维,我们只要找出所有没有重复数字的数字个数total,再用N-total,就能得到结果

现在问题就是如何才能找到没有重复数字的数字个数

我们可以通过高低位重新组合得到,举个例子

现在要求222的不重复数字个数

<
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值