网易乐得 线下笔试 求第N个丑数 Java实现

来源:互联网 发布:mysql 日期时间函数 编辑:程序博客网 时间:2024/06/10 06:11

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


0 0
原创粉丝点击