题解 | 寻找丑数

寻找丑数

https://www.nowcoder.com/practice/cff52ae345a248ea94c8c0cc2d278474

import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();

        // 每一个丑数都是由前面的丑数*2*3*5得来的
        int[] dp = new int[n];
        dp[0] = 1;
        int index2 = 0, index3 = 0, index5 = 0;
        for(int i = 1; i < n; i++){
            int ugly2 = dp[index2] * 2;
            int ugly3 = dp[index3] * 3;
            int ugly5 = dp[index5] * 5;

            dp[i] = Math.min(Math.min(ugly2,ugly3),ugly5);
            if(dp[i] == ugly2){
                index2++;
            }
            if(dp[i] == ugly3){
                index3++;
            }
            if(dp[i] == ugly5){
                index5++;
            }
        }
        System.out.println(dp[n - 1]);
    }
}

全部评论

相关推荐

码农索隆:传音老登来也。 但是这个我不知道怎么回答,不仅仅传音吧,很多公司在候选人不第一时间接受offer或主动将报道时间延期时,都会再从池子里面捞人,直到l捞到满足公司所有要求的人。
秋招的第一个offer,...
点赞 评论 收藏
分享
算法丰川祥:实际就两个人给他投,它这么说好显得自己比较抢手
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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