leetcode中等264丑数2
Posted qq_40707462
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode中等264丑数2相关的知识,希望对你有一定的参考价值。
思路:
动态规划,三指针,三个指针分别指向第i个数,×2,×3,×5三个队列,每次选择最小的加入dp,指针后移
已经排好的数组,先放进第一个丑数:[1]
排好数组*2 :[1]*2=2
排好数组*3 :[1]*3=3
排好数组*5 :[1]*5=5
选结果中最小的数加入数组,此时明显是2,新的排序数组为[1,2];
将 (2的指针) [1]转向下一位[2],对比 (下一个元素2 和3,5)的大小
class Solution:
def nthUglyNumber(self, n: int) -> int:
n2,n3,n5=0,0,0
dp=[0]*n
dp[0]=1
for i in range(1,n):
dp[i]=min(dp[n2]*2,dp[n3]*3,dp[n5]*5)
if(dp[i]==dp[n2]*2):n2+=1
if(dp[i]==dp[n3]*3):n3+=1
if(dp[i]==dp[n5]*5):n5+=1
return dp[-1]
class Solution {
public int nthUglyNumber(int n) {
int n2=0,n3=0,n5=0;
int[]dp=new int[n];
dp[0]=1;
for(int i=1;i<n;i++){
dp[i]=Math.min(2*dp[n2],Math.min(3*dp[n3],5*dp[n5]));
if(dp[i]==2*dp[n2]) n2++;
if(dp[i]==3*dp[n3]) n3++;
if(dp[i]==5*dp[n5]) n5++;
}
return dp[n-1];
}
}
以上是关于leetcode中等264丑数2的主要内容,如果未能解决你的问题,请参考以下文章
⭐算法入门⭐《二分枚举》中等05 —— LeetCode 1201. 丑数 III