lintcode: Ugly Number II

来源:互联网 发布:网络知识大赛 编辑:程序博客网 时间:2024/05/17 06:45

Ugly number is a number that only have factors 2, 3 and 5.

Design an algorithm to find the nth ugly number. The first 10 ugly numbers are 1, 2, 3, 4, 5, 6, 8, 9, 10, 12…

参考http://www.cnblogs.com/grandyang/p/4743837.html

class Solution {public:    /*     * @param n an integer     * @return the nth prime number as description.     */    int nthUglyNumber(int n) {        // write your code here        vector<int> ugly(n,0);        ugly[0]=1;        int ugly2=0,ugly3=0,ugly5=0;        int i=1;        while(i<=n-1){            int minUgly=min(min(ugly[ugly2]*2,ugly[ugly3]*3),ugly[ugly5]*5);            ugly[i]=minUgly;            /*注意这里分别if,因为有可能有多个等于minUgly*/            if(minUgly==ugly[ugly2]*2){                ugly2++;            }            if(minUgly==ugly[ugly3]*3){                ugly3++;            }            if(minUgly==ugly[ugly5]*5){                ugly5++;            }            i++;        }        return ugly[n-1];    }};
0 0
原创粉丝点击