题解 | 寻找丑数

寻找丑数

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]);
    }
}

全部评论

相关推荐

10-14 21:00
门头沟学院 Java
吃花椒的狸猫:这个人说的倒是实话,特别是小公司,一个实习生哪里来的那么多要求
点赞 评论 收藏
分享
11-13 14:37
门头沟学院 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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