1. 程式人生 > >LeetCode 263. Ugly Number 264 Ugly Number II 313 Super Ugly Number

LeetCode 263. Ugly Number 264 Ugly Number II 313 Super Ugly Number

 
/**
263 ugly number是一個數的因子是否只包含2,3,5(1被看作是ugly number)
*/
bool isUgly(int num) {
        if(num<=0)
        return false;
    while(num%2==0)
        num/=2;
    while(num%3==0)
        num/=3;
    while(num%5==0)
        num/=5;
    return num==1;
}
/**
264 找到第n個ugly number
For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.
第k個ugly number必定是前面已經形成的ugly number乘以2或3或5,用index[i]來儲存使用2,3,5的數目,
那麼index[j]指的是我們已經建成的最小的ugly number的索引,所以下一個ugly number = min(res[index[j]]*primes[j]);
*/
int nthUglyNumber(int n) {
    vector<int>primes = {2,3,5};
    vector<int>index(3,0);
    vector<int>res(n,INT_MAX);
    res[0] = 1;
    for(int i=1;i<n;i++){
        for(int j =0;j<3;j++)
            res[i] = min(res[i],res[index[j]]*primes[j]);
        for(int j=0;j<3;j++)
            index[j]+=(res[i]==res[index[j]]*primes[j]);
    }
     for(int i:res)
        cout<<i<<" ";
    cout<<endl;
    return res[n-1];
}

/**
同上,自己輸入primes[];
*/
int nthSuperUglyNumber(int n, vector<int>& primes) {
    vector<int>res(n,INT_MAX);
    vector<int>index(primes.size(),0);
    res[0] = 1;
    for(int i=1;i<n;i++){
        for(int j=0;j<primes.size();j++)
            res[i] = min(res[i],res[index[j]]*primes[j]);
        for(int j=0;j<primes.size();j++)
            index[j] += (res[i]==res[index[j]]*primes[j]);
    }
    for(int i:res)
        cout<<i<<" ";
    cout<<endl;
    return res[n-1];
}

相關推薦

python leetcode 263. Ugly Number 264. Ugly Number II 313. Super Ugly Number

263. Ugly Number class Solution: def isUgly(self, num): """ :type num: int :rtype: bool """ if num&

LeetCode 263. Ugly Number 264 Ugly Number II 313 Super Ugly Number

 /** 263 ugly number是一個數的因子是否只包含2,3,5(1被看作是ugly number) */ bool isUgly(int num) { if(num<

[LeetCode]313. Super Ugly Number

[LeetCode]313. Super Ugly Number 題目描述 思路 動態規劃 保持結果序列遞增,需要確保每次放入結果序列的數是當前乘積最小,當前的乘積是由產生序列的數和素數數組裡的數乘積得到的,因此需要一個狀態陣列來儲存對於素數數組裡的每個數,乘到了數組

LeetCode-313. Super Ugly Number (JAVA)超級醜數

313. Super Ugly Number Write a program to find the nth super ugly number. Super ugly numbers are p

LeetCode--263. Ugly Number & 264. Ugly Number II

問題連結:https://leetcode.com/problems/ugly-number/和https://leetcode.com/problems/ugly-number-ii/ 關於醜陋數,問題比較簡單,問題二也不難,但值得研究研究。 問題一思路:比較直接沒啥好說的,注意醜陋數為正

LeetCode 264--醜數 II ( Ugly Number II ) ( C語言版 )

題目描述 :  當我們去遍歷查詢第n個醜數時 , 則會出現超出時間限制 ; 據觀察可知醜數就相當於三個已排序陣列的合集 1*2 2*2 3*2 4*2 5*2 6*2 8*2 .......' 1*3 2*3 3*3 4*3 5*3 6*3 8*3 .......

[leetcode-263-Ugly Number]

ted nbsp ogr pan reat sin return spa pic Write a program to check whether a given number is an ugly number.Ugly numbers are positive numb

leetcode-263-Ugly Number

cal color ont rim 個數 mil check rgb style Ugly Number Write a program to check whet

Leetcode 263: Ugly Number

cto rime public hose urn return false solution who Write a program to check whether a given number is an ugly number. Ugly numbers are po

leetcode 263. Ugly Number

AS ron NPU return solution TP out cto sel Write a program to check whether a given number is an ugly number. Ugly numbers are positive

Leetcode 263. Ugly Number--是正數,並且質因子是2,3,5

Write a program to check whether a given number is an ugly number. Ugly numbers are positive numbers whose prime factors only include&nb

[LeetCode] Number of Distinct Islands II 不同島嶼的個數之二

leetcode and arr sid connected emp after etc sum Given a non-empty 2D array grid of 0‘s and 1‘s, an island is a group of 1‘s (represen

[LeetCode] Guess Number Higher or Lower II 猜數字大小之二

We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. You have to guess which number I picked. Every time you guess wro

[Swift]LeetCode313. 超級醜數 | Super Ugly Number

Write a program to find the nth super ugly number. Super ugly numbers are positive numbers whose all prime factors are in the given prime list&n

375. Guess Number Higher or Lower II

ive end guess whether num true possibly find hat We are playing the Guess Game. The game is as follows: I pick a number from 1 to n. Yo

leetcode375 Guess Number Higher or Lower II

span cnblogs ron guess problem higher pan tro size 思路: dp。 https://leetcode.com/problems/guess-number-higher-or-lower-ii/discuss/ 實現: 1

375. Guess Number Higher or Lower II (Python)

下一步 每次 ever 到你 寫代碼 however 思路 時序 簡單 375. Guess Number Higher or Lower II Description We are playing the Guess Game. The game is as follo

LeetCode264. 醜數 II

題目連結:https://leetcode-cn.com/problems/ugly-number-ii/description/ 題目描述 編寫一個程式,找出第 n 個醜數。 醜數就是隻包含質因數 2, 3, 5 的正整數。 示例 輸入: n = 10 輸出: 12

LeerCode 375.猜數字大小 II Guess Number Higher or Lower II

題目連結 在1到n之間猜數字,猜錯了,會告訴你大了還是小了。 並且,如果猜的是數字X,錯了,就要支付金額為X的現金;猜對了,就贏了。 那麼至少需要擁有多少現金才能確保你能贏得這個遊戲。 解法可以看其他博主寫的文章 文章連結 基於一些規律,加上題目給出的測試用例比較少,可以嘗試走捷徑。

LC 711. Number of Distinct Islands II

Given a non-empty 2D array grid of 0's and 1's, an island is a group of 1's (representing land) connected 4-directionally (horizon