function nthUglyNumber(n: number): number {
let dp: number[] = new Array(n + 1).fill(0);
dp[1] = 1;
let x = 1, y = 1, z = 1;
for (let i = 2; i <= n; i++) {
let t1 = dp[x] * 2;
let t2 = dp[y] * 3;
let t3 = dp[z] * 5;
dp[i] = Math.min(t1, t2, t3);
if (t1 === dp[i]) x++;
if (t2 === dp[i]) y++;
if (t3 === dp[i]) z++;
}
return dp[n];
};
class Solution {
public int nthUglyNumber(int n) {
//dp[i] 肯定等于 之前的某一个数2/3/5
// 记录 a索引2 b索引3 c索引是5
//当做3个有序数组合并
int dp[] =new int[n];
dp[0]=1;
int a=0;
int b =0;
int c = 0;
for(int i=1;i<n;i++)
{
dp[i]=Math.min(dp[a]2,Math.min(dp[b]3,dp[c]5));
if(dp[i]dp[a]2) a++;
if(dp[i]dp[b]3) b++;
if(dp[i]dp[c]5) c++;
共以下 10 个回答
没碰到过还真不会
时间复杂度:O(n)
空间发杂度:O(n)
背
class Solution {
public int nthUglyNumber(int n) {
//dp[i] 肯定等于 之前的某一个数2/3/5
// 记录 a索引2 b索引3 c索引是5
//当做3个有序数组合并
int dp[] =new int[n];
dp[0]=1;
int a=0;
int b =0;
int c = 0;
for(int i=1;i<n;i++)
{
dp[i]=Math.min(dp[a]2,Math.min(dp[b]3,dp[c]5));
if(dp[i]dp[a]2) a++;
if(dp[i]dp[b]3) b++;
if(dp[i]dp[c]5) c++;
}
8.8 周二
Day29:下面是代码