leetcode_middle_13_357. Count Numbers with Unique Digits
来源:互联网 发布:mastercam车铣复合编程 编辑:程序博客网 时间:2024/06/10 21:17
题意:
给定一个整数,返回0到10的n次方中每个位都不等的数的个数。
分析:
即我们要找出存在相等位的数的个数(比如1234567891)有两个1。我们发现这样的数1位数有10个(0到9)。2位数是有9*9个(第一位即十位有9种选择(1-9),第二位有0-9除去第一位已经确定的有9种,所以总共9*9=81种)。依次类推,按照排列组合的思想,3位数是9*9*8个,4位数是9*9*8*7个,直到10位数及以上是0,因为0-9九个数字必定有重复。
我们来考虑一般规律和特殊情况:
特殊情况1:n == 0的时候返回1.后面发现正好是count的初始值,直接返回即可,所以不用特殊处理。
特殊情况2:n>=10的时候阶段性的和是0,考虑在循环中到0的时候处理
特殊情况3:9*9*8,9乘了一次9才变成8,考虑在循环中到9的时候处理
public class Solution { public int countNumbersWithUniqueDigits(int n) { int count = 1; int m = 9; //排列组合的每一位的排法 int t = 1; //每n位数的阶段性的和 while(n > 0){ t *= m; count += t; n--; if(t != 9 && t!=0) //对特殊情况2,3的处理 m--; } return count; }}
0 0
- leetcode_middle_13_357. Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- Count Numbers with Unique Digits
- 【LeetCode】357. Count Numbers with Unique Digits
- 357. Count Numbers with Unique Digits
- leetcode Count Numbers with Unique Digits
- LeetCode 357. Count Numbers with Unique Digits
- LeetCode:Count Numbers with Unique Digits
- 久别重逢的可能——Andriod
- JAVA多态
- HTML自学 第二节
- 设计模式-工厂方法模式
- ssh,expect脚本实现远程登录,拷贝命令scp,rsync服务器的搭建
- leetcode_middle_13_357. Count Numbers with Unique Digits
- 求职信
- 使用EA生成多层次的代码框架
- AppDynamic 可视化监测应用性能,应用访问量等
- 为什么会出现双摄像头手机?
- Android进阶之路 - ListView的使用详解
- 通过批处理bat设置系统环境变量的实现代码,bat环境变量
- ASP程序常见错误一——————父路径未开启
- 算法竞赛入门经典 第二版 习题4-5 IP网络 IP Networks uva1590