题解 | #丑数#
丑数
http://www.nowcoder.com/practice/6aa9e04fc3794f68acf8778237ba065b
标题
```import java.util.* ;
public class Solution {
public int GetUglyNumber_Solution(int index) {
if(index <= 6) {
return index ;
}
int p2 = 0 ;//res中哪个元素*2
int p3 = 0 ;//res中哪个元素*3
int p5 = 0 ;//res中哪个元素*5
int res[] = new int[index] ;//res[i]表示第i+1个丑数
res[0] = 1 ;
for(int i = 1 ; i < index ; i ++) {
//下一个丑数
res[i] = Math.min(res[p2]*2 , Math.min(res[p3]*3 , res[p5]*5)) ;
//具体是哪一个
if(res[i] == res[p2]*2) {
//因为当前p2指向的数*2得到的丑数已经被使用,下一次*2的数字就不是ps当前指的了,向后移动一位
p2++ ;
}
if(res[i] == res[p3]*3) { //必须每个数都判断一下,因为这三个数有可能出现重复,即只要使用了的数,就不能再使用了
p3++ ;
}
if(res[i] == res[p5]*5) {
p5++ ;
}
}
return res[index-1] ;
}
}
一个菜鸟的算法刷题记录 文章被收录于专栏
分享一个菜鸟的成长记录