Topic:
Write a program to find the n
-th ugly number.
ugly numbers is positive numbers whose prime factors only Include 2, 3, 5
. For Example, 1, 2, 3, 4, 5, 6, 8, 9, ten,
is the sequence of the First 10
ugly numbers.
Note that's 1
typically treated as an ugly number.
Ideas:
Reference: http://blog.csdn.net/u012243115/article/details/45222269.
Code:
Class Solution {public: int nthuglynumber (int n) { if (n <= 0) return 0; int *uglynum = new Int[n] (); int *uglynum2 = Uglynum; int *uglynum3 = Uglynum; int *uglynum5 = Uglynum; Uglynum[0] = 1; int count = 1; while (Count < n) { int curugly = min (min (*uglynum2 * 2, *UGLYNUM3 * 3), *UGLYNUM5 * 5); Uglynum[count] = curugly; while (*UGLYNUM2 * 2 <= curugly) uglynum2++; while (*UGLYNUM3 * 3 <= curugly) uglynum3++; while (*UGLYNUM5 * 5 <= curugly) uglynum5++; count++; } int result = Uglynum[n-1]; delete [] uglynum; return result;} ;
Copyright NOTICE: Reprint please indicate the source.
Leetcode OJ Ugly number II (Ugly-two)