[LeetCode]264 丑数 II

来源:互联网 发布:线切割编程基础知识 编辑:程序博客网 时间:2024/06/04 20:09

Ugly Number II(丑数 II)

Write a program to find the n-th ugly number.

Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 is the sequence of the first 10 ugly numbers.

Note that 1 is typically treated as an ugly number.
丑数是素数因子只包含2,3或5的正整数,求第n个丑数。


解题思路

此题是第313题的基础,只是素数表变成了固定的2,3和5。
具体可看http://blog.csdn.net/qq_14821023/article/details/50880424


c++代码如下:

class Solution {public:    int nthUglyNumber(int n) {        int primes[3] = {2,3,5};        vector<int> ugly(n,INT_MAX);        vector<int> tmp(3,1);        vector<int> count(3,0);        int next = 1;        for (int i = 0; i < n; i++) {            ugly[i] = next;            next = INT_MAX;            for (int j = 0; j < 3; j++) {                if (tmp[j] == ugly[i]) {                    tmp[j] = ugly[count[j]]*primes[j];                    count[j]++;                }                next = min(next,tmp[j]);            }        }        return ugly[n-1];    }};
0 0