找出第n个ugly number(因数只有2 3 5)
代码写得很巧妙 学到了
因为每一轮都会将cur与2 3 5 分别判断一遍,所以不会有重复值
class Solution {
public int nthUglyNumber(int n) {
ArrayList<Integer> ans = new ArrayList<>();
ans.add(1);
int i2 = 0, i3 = 0, i5 = 0;
while(ans.size()<n){
int cur = Math.min(ans.get(i2)*2,Math.min(ans.get(i3)*3,ans.get(i5)*5));
if(cur == ans.get(i2)*2) i2++;
if(cur == ans.get(i3)*3) i3++;
if(cur == ans.get(i5)*5) i5++;
ans.add(cur);
}
return ans.get(n-1);
}
}
本文介绍了一种巧妙的算法实现,通过维护三个指针跟踪2、3、5倍的当前最小丑数,找出第n个丑数,避免了重复值。代码实例展示了如何利用Math.min函数高效地找到下一个丑数并更新指针。
746

被折叠的 条评论
为什么被折叠?



