Update 49. 丑数.md

文字校对题目描述,补充动态规划三指针解法思路与推导示例。
This commit is contained in:
CyC2018
2026-10-30 20:18:05 +08:00
parent a93807eb2f
commit e01c276f24
+5 -1
View File
@@ -4,10 +4,14 @@
## 题目描述
把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。例如 6、8 都是丑数,但 14 不是,因为它包含因子 7。习惯上把 1 当做是第一个丑数。求按从小到大的顺序的第 N 个丑数。
把只包含因子 2、3 和 5 的数称作丑数(Ugly Number)。例如 6、8 都是丑数,但 14 不是,因为它包含因子 7。习惯上把 1 当作第一个丑数。求按从小到大的顺序的第 N 个丑数。
## 解题思路
除了 1,每个丑数都是某个更小的丑数乘以 2、3 或 5 得到的。dp 按从小到大的顺序保存丑数,i2、i3、i5 分别指向下一个要乘以 2、3、5 的丑数,三个乘积中最小的就是下一个丑数。哪个指针产生了它,就把哪个指针后移;6 = 3 × 2 = 2 × 3 这类乘积相等的情况,两个指针同时后移,避免重复。
例如已经得到 1, 2, 3, 4, 5, 6 时,i2、i3、i5 分别指向 4、3、2,三个候选为 8、9、10,下一个丑数是 8,i2 后移到 5。
```java
public int nthUglyNumber(int n) {
if (n <= 6)