所谓丑数,就是只能够被2或3或5整除,我们习惯将1作为第一个丑数,求第n个丑数。
基本思想可查看剑指offer 第34题。
Java代码实现:
/**
* @author fangzheng
* @date 2016年9月25日 下午4:07:47
*/
public class UglyNumber {
public static void main(String[] args) {
System.out.println(getNUglyNumber(5));
}
public static int getNUglyNumber(int n) {
int[] uglyNumbers = new int[n];
uglyNumbers[0] = 1;
int first = 0;
int second = 0;
int third = 0;
int count = 1;
while (count < n) {
int M2 = uglyNumbers[first] * 2;
int M3 = uglyNumbers[second] * 3;
int M5 = uglyNumbers[third] * 5;
int min = Math.min(Math.min(M2, M3), M5);
uglyNumbers[count++] = min;
while (uglyNumbers[first] * 2 <= min) {
first++;
}
while (uglyNumbers[second] * 3 <= min) {
second++;
}
while (uglyNumbers[third] * 5 <= min) {
third++;
}
}
return uglyNumbers[n - 1];
}
}