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的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode——264. 丑数 II

⭐算法入门⭐《二分枚举》中等05 —— LeetCode 1201. 丑数 III

LeetCode(算法)- 264. 丑数 II

Leetcode之动态规划(DP)专题-264. 丑数 II(Ugly Number II)

264. 丑数 II(优先队列三指针)

264. 丑数 II(优先队列三指针)