Leetcode Week14 Ugly Number II
阿新 • • 發佈:2019-01-02
Question
Write a program to find the n
-th ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5
.
Example:
Input: n = 10 Output: 12 Explanation:1, 2, 3, 4, 5, 6, 8, 9, 10, 12
is the sequence of the first10
ugly numbers.
Note:
1
is typically treated as an ugly number.n
does not exceed 1690.
Answer
class Solution { public: int nthUglyNumber(int n) { if (n <= 0) return 0; vector<int> vec(1, 1); int p = 0, q = 0, z = 0; int minVal = 1; for (int i = 1; i < n; i++) { minVal= min(min(vec[p] * 2, vec[q] * 3), vec[z] * 5); vec.push_back(minVal); if (vec[p] * 2 == minVal) p++; if (vec[q] * 3 == minVal) q++; if (vec[z] * 5 == minVal) z++; } return minVal; } };
既然是隻有2,3,5的因子,只需將他們每種情況都考慮了就可以了,排序相當於在min的功能做了。