Ugly Number 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, and n does not exceed 1690.

找第n个Ugly Number,比较直接的想法就是从小到大一个一个找,然后count加1加1加1,然后我觉得这样一定会超时的…然后想到之前做过质数的,应该方法类似。可以先判断该数是不是Ugly Number,不是的话那么该数所有的倍数就也都不是。还是没有想出来应该怎么写,偷看了下tags,看到了DP。还是没啥想法。
然后又可耻的看了下答案。
第i个Ugly Number和第i-1个Ugly Number的关系是什么呢?说不出来啥关系,不好说,还是直接看代码吧。
就是Ugly Number肯定是之前小Ugly Number和2、3、5的一个乘积。

class Solution {
public:
    int nthUglyNumber(int n) {
        if (n == 1)
            return 1;
        int t2 = 0, t3 = 0, t5 = 0;
        vector dp(n, 1);
        for (int i=1; i

你可能感兴趣的:(Ugly Number II)