🗒️357. 统计各位数字都不同的数字个数
2024-12-16
| 2024-12-16
0  |  阅读时长 0 分钟
type
status
date
slug
summary
tags
category
icon
password
创建时间
Dec 16, 2024 02:02 AM
给你一个整数 n ,统计并返回各位数字都不同的数字 x 的个数,其中 0 <= x < 10n 。

组合

针对不同位数的数字,分别统计。当 n = x 时,我们需要计算 0, 1, 2, …, x 不同位数的组合数量,然后将其加到答案上。
我们发现在第二重循环中,每次计算都会包含之前的计算。
i = 3, tmp = 9 * 8 * 9
i = 2, tmp = 9 * 9
因此,我们可以不使用第二次循环。
其他写法

动态规划

dp[i] 数组表示 i 位的数字的方案数
1 + 9 + 9 * 9 + 9 * 9 * 8 + 9 * 9 * 8 * 7 + ..
n = 0:1 种方案
n = 1:n = 0 + 长度为 1 的数字个数(9 个)= 1 + 9 = 10
n = 2:n = 1 + 长度为 2 的数字个数(9 * 9 个)= 10 + 9 * 9 = 81
n = 3:n = 2 + 长度为 3 的数字个数(9 * 9 * 8 个)= 81 + 9 * 9 * 8 = 739
n = 4:n = 3 + 长度为 4 的数字个数(9 * 9 * 8 * 7 个)= 10 + 9 * 9 * 8 * 7 = 5275

📎 参考

  • 【题单】数学算法
  • 1175. 质数排列62. 不同路径
    Loading...