题目描述
编写一个程序,找出第 n 个丑数。
丑数就是只包含质因数 2, 3, 5 的正整数。
示例:
输入: n = 10
输出: 12
解释: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 个丑数。
总结
咚咚咚咚咚咚态规划,这题让我来想估计想到index++那里会用比较大小的方式(逃…),有时候做的题多了反而思维更死板了。
Sample & Demo Code
class Solution {
public int nthUglyNumber(int n) {
int[] nums = new int[n];
nums[0] = 1;
int index2 = 0, index3 = 0, index5 = 0;
int value2, value3, value5;
int cnt = 1, tmp;
while(cnt < n) {
value2 = nums[index2] * 2;
value3 = nums[index3] * 3;
value5 = nums[index5] * 5;
tmp = Math.min(value2, Math.min(value3, value5));
nums[cnt++] = tmp;
if(tmp == value2) index2++;
if(tmp == value3) index3++;
if(tmp == value5) index5++;
}
return nums[n-1];
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/ugly-number-ii