zoukankan      html  css  js  c++  java
  • [LeetCode]313. Super Ugly Number超级丑数,丑数系列看这一道就行了

    丑数系列的题看这一道就可以了

    /*
        和ugly number2差不多,不过这次的质因子多了,所以用数组来表示质因子的target坐标
        target坐标指的是这个质因子此次要乘的前任丑数是谁
         */
        public int nthSuperUglyNumber(int n, int[] primes) {
            //记录相乘坐标,存的是每个质因子对应相乘搭档在丑数数组中的下标
            int[] target = new int[primes.length];
            //动态规划数组
            int[] dp = new int[n];
            //第一个丑数是0
            dp[0] = 1;
            for (int i = 1; i < n; i++) {
                //每次都要把所有质因子都乘上对应数试试,维护一个min和一个index
                int min  = Integer.MAX_VALUE;
                int index = 0;
                for (int j = 0; j < primes.length; j++) {
                    if (min>primes[j]*dp[target[j]])
                    {
                        min = primes[j]*dp[target[j]];
                        index = j;
                    }
                    //别忘了,如果有另外的质因子也组成了相同的数,那么这个质因子的target要跳过
                    //因为得到相同丑数的组合只保留一种即可
                    //在丑数2中,由于是分别判断2,3,5,所以重复的组合都跳过了
                    else if (min==primes[j]*dp[target[j]]) target[j]++;
                }
                //更新dp和target
                dp[i] = min;
                target[index]++;
            }
            return dp[n-1];
        }
  • 相关阅读:
    Jmeter的两种录制脚本的方式
    【.NET】设置EntityFramework中decimal类型数据精度 [转]
    vscode格式化vue不换行
    mysql5.7 noinstall 安装 【转载】
    配置STP、RSTP以及负载均衡
    配置3层交换机VLAN间通信
    配置单臂路由
    配置DTP
    配置trunk
    配置VLAN
  • 原文地址:https://www.cnblogs.com/stAr-1/p/8478811.html
Copyright © 2011-2022 走看看