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次的丑数,然后将这个数分别成*2 *3 *5存入,再移去这个数
public class Solution {
public int nthUglyNumber(int n) {
SortedSet<Long> ss = new TreeSet<Long>();
ss.add((long)1);
long result=0;
for(int i=0;i<n;i++){
result=ss.first();
ss.add(result*2);
ss.add(result*3);
ss.add(result*5);
ss.remove(result);
}
return (int)result;
}
}