亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

264. Ugly Number II & 313. Super Ugly Number

hiyang / 3010人閱讀

摘要:每次出一個(gè)數(shù),就把這個(gè)數(shù)的結(jié)果都放進(jìn)去。,指針從個(gè)變成個(gè)。的做法參考還是復(fù)雜度的問題,回頭再看看

264. Ugly Number II

題目鏈接:https://leetcode.com/problems...

dp的方法參考discussion:
https://discuss.leetcode.com/...

dp的subproblem是:dp[i]: i-th ugly number
dp的function是:dp[i] = min(dp[t2] * 2, dp[t3] * 3, dp[t5] * 5)
其中,t2-1, t3-1, t5-1分別為上一個(gè)*2, *3, *5得到的丑數(shù),所以當(dāng)前dp[t2]*2, dp[t3]*3, dp[t5]*5分別表示當(dāng)前由*2, *3, *5得到的最小丑數(shù)

public class Solution {
    public int nthUglyNumber(int n) {
        if(n == 0) return 0;
        if(n == 1) return 1;
        
        int[] dp = new int[n];
        dp[0] = 1;
        int t2 = 0, t3 = 0, t5 = 0;
        for(int i = 1; i < n; i++) {
            dp[i] = Math.min(Math.min(dp[t2]*2, dp[t3]*3), dp[t5]*5);
            if(dp[i] == dp[t2]*2) t2++;
            if(dp[i] == dp[t3]*3) t3++;
            if(dp[i] == dp[t5]*5) t5++;
        }
        return dp[n-1];
    }
}

標(biāo)簽還寫了heap,比較明顯的greedy做法,用一個(gè)min heap,top存的是當(dāng)前最小的丑數(shù),poll出n-1個(gè)數(shù),最后top就是第n個(gè)丑數(shù)。每次poll出一個(gè)數(shù),就把這個(gè)數(shù)*2, *3, *5的結(jié)果都放進(jìn)去。這個(gè)復(fù)雜度不太確定,回頭再看看。注意去重,因?yàn)槌?,乘3最后會導(dǎo)致一個(gè)結(jié)果出現(xiàn)多次,還有最后存的結(jié)果可能overflow,所以用long來處理,參考discussion:
https://discuss.leetcode.com/...

public class Solution {
    public int nthUglyNumber(int n) {
        if(n == 0) return 0;
        if(n == 1) return 1;
        
        PriorityQueue minHeap = new PriorityQueue();
        minHeap.offer(1L);
        for(int i = 1; i < n; i++) {
            long cur = minHeap.poll();
            // remove duplication
            while(!minHeap.isEmpty() && minHeap.peek() == cur) minHeap.poll();
            minHeap.add(cur*2);
            minHeap.add(cur*3);
            minHeap.add(cur*5);
        }
        return minHeap.poll().intValue();
    }
}
313. Super Ugly Number

題目鏈接:https://leetcode.com/problems...

和上一題的方法是一樣的,只不過這里把2,3,5變成了給的primes數(shù)組里的數(shù)。
dp,index指針從3個(gè)變成len(primes)個(gè)。

public class Solution {
    public int nthSuperUglyNumber(int n, int[] primes) {
        if(n == 0) return 0;
        if(n == 1) return 1;
        // dp[i]: i-th ugly number
        int[] dp = new int[n];
        int m = primes.length;
        // index[i]: ugly number producted by primes[i]
        int[] index = new int[m];
        dp[0] = 1;
        for(int i = 1; i < n; i++) {
            dp[i] = Integer.MAX_VALUE;
            for(int j = 0; j < m; j++) dp[i] = Math.min(dp[i], primes[j]*dp[index[j]]);
            
            // update index points
            for(int j = 0; j < m; j++) {
                if(dp[i] == dp[index[j]] * primes[j]) index[j]++;
            }
        }
        
        return dp[n-1];
    }
}

heap+dp的做法參考discussion:
https://discuss.leetcode.com/...

還是復(fù)雜度的問題,回頭再看看

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/69877.html

相關(guān)文章

  • 264. Ugly NumberII &amp; 313. Super Ugly Number

    摘要:題目解答這個(gè)問題最主要的就是如果按順序找出那么我們?nèi)绻芟氲桨岩詾橐蜃拥倪@些分成三個(gè)然后在每次輸出時(shí)取里最小的那個(gè)數(shù)輸出就可以解決了。 264 Ugly NumberII題目:Write a program to find the n-th ugly number. Ugly numbers are positive numbers whose prime factors only i...

    Lionad-Morotar 評論0 收藏0
  • leetcode263,264,313 ugly numbers

    摘要:這題可以使用暴力遍歷法,從開始,對每一個(gè)數(shù)都進(jìn)行判斷,直到找到第個(gè)丑數(shù)為止。優(yōu)先隊(duì)列可以很好的滿足該情況。因此每個(gè)素?cái)?shù)持有的信息包括當(dāng)前對應(yīng)的丑數(shù)的下標(biāo)。 前言 這一篇博客把ugly numbers系列的題目做一個(gè)整理。這三道題正好是一個(gè)思路的循序漸進(jìn),所以放在一篇博客當(dāng)中。 Ugly Number Write a program to check whether a given nu...

    everfly 評論0 收藏0
  • Leetcode[313] Super Ugly Number

    摘要:滾動求最大值復(fù)雜度考慮一個(gè),的值是下一個(gè)可能的替補(bǔ)值。思路數(shù)組中保存的是之前保留到的值,因?yàn)橄乱粋€(gè)可能的值是和之前的值的倍數(shù)關(guān)系。 Leetcode[313] Super Ugly Number Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whos...

    Aklman 評論0 收藏0
  • leetcode-313-Super Ugly Number

    摘要:題意找出以某些數(shù)為公因數(shù)的遞增排序的第個(gè)數(shù)條件維護(hù)了的元素的相乘因素的。由于是最小值,所以每次保留最小的。問題轉(zhuǎn)化,多次迭代,變成,處理對象變了。不重復(fù)的思想找出重復(fù)計(jì)算的地方,找出不重復(fù)計(jì)算的方法,用極值約束,加以記錄。 題意:找出以某些數(shù)為公因數(shù)的 遞增排序的第n個(gè)數(shù) 條件:indexes 維護(hù)了 primes的元素的相乘因素(uglies)的index。 思路:每次從 prim...

    張春雷 評論0 收藏0
  • [LintCode/LeetCode] Super Ugly Number

    摘要:建兩個(gè)新數(shù)組,一個(gè)存數(shù),一個(gè)存。數(shù)組中所有元素初值都是。實(shí)現(xiàn)的過程是,一個(gè)循環(huán)里包含兩個(gè)子循環(huán)。兩個(gè)子循環(huán)的作用分別是,遍歷數(shù)組與相乘找到最小乘積存入再遍歷一次數(shù)組與的乘積,結(jié)果與相同的,就將加,即跳過這個(gè)結(jié)果相同結(jié)果只存一次。 Problem Write a program to find the nth super ugly number. Super ugly numbers a...

    wuyumin 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<