动态规划

丑数

http://www.nowcoder.com/questionTerminal/6aa9e04fc3794f68acf8778237ba065b

丑数必定是由若干个2,3,5相乘获得的,每个丑数乘2.3.5分别可以衍生出3个新丑数,但是会存在重复。所以定义三个指针分别代表乘2.3.5。开始都指向0,每次乘2.3.5,最小的值就是下一个丑数,那相应的指针也得++。在动态的比较中获得最小的丑数。

import java.util.*;
public class Solution {
    public int GetUglyNumber_Solution(int index) {
        if(index<=0) return 0;
        int[] result=new int[index];
        int p2=0,p3=0,p5=0;
        result[0]=1;
       for (int i=1;i<index;i++){
           int min=Math.min(result[p2]*2,Math.min(result[p3]*3,result[p5]*5));
           if (min==result[p2]*2) {
               result[i]=min; 
               p2++;
           }
           if (min==result[p3]*3){
               result[i]=min; 
               p3++;
           } 
           if (min==result[p5]*5){
               result[i]=min; 
               p5++;
           } 
        }
        return result[index-1];
    }
}
全部评论

相关推荐

2025-12-18 19:36
已编辑
门头沟学院 Java
程序员牛肉:可以的,简历没毛病了。 虽然还是偏向同质化,不过学历不错。后续我觉得重心放到刷实习+摆脱同质化问题上
实习简历求拷打
点赞 评论 收藏
分享
评论
4
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务