所谓丑数,就是只能够被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]; } }