您的位置:首页 > 其它

**[Lintcode]Ugly Number II 丑数 II

2016-12-04 17:27 423 查看
Ugly number is a number that only have factors 
2
3
 and 
5
.

Design an algorithm to find the nth ugly number. The first 10 ugly numbers are 
1,
2, 3, 4, 5, 6, 8, 9, 10, 12...


分析:

(1) 1×2, 2×2, 3×2, 4×2, 5×2, …

(2) 1×3, 2×3, 3×3, 4×3, 5×3, …

(3) 1×5, 2×5, 3×5, 4×5, 5×5, …

分成三组,每次取最小值做丑数,每组使用一个指针。然后被选中的数的指针后移。

class Solution {
/**
* @param n an integer
* @return the nth prime number as description.
*/
public int nthUglyNumber(int n) {
int[] arr = new int
;
arr[0] = 1;
int index = 1;
int a = 2, b = 3, c = 5;
int indexA = 1, indexB = 1, indexC = 1;
for(int i = 1; i < arr.length; i++) {
int min = Math.min(Math.min(a, b), c);
arr[i] = min;

if(a == min) a = arr[indexA++] * 2;
if(b == min) b = arr[indexB++] * 3;
if(c == min) c = arr[indexC++] * 5;
}
return arr[arr.length - 1];
}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  lintcode