题解 | #Redraiment的走法#

Redraiment的走法

http://www.nowcoder.com/practice/24e6243b9f0446b081b1d6d32f2aa3aa


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while (sc.hasNextInt()) {
            int n = sc.nextInt();
            int[] arr = new int[n];
            for (int i = 0; i < arr.length; i++) {
                arr[i] = sc.nextInt();
            }
            count(arr);
        }
    }
    private static void count(int[] arr) {
        int[] countArr = new int[arr.length];
        Arrays.fill(countArr, 1);
        int max = 1;

        // 以索引1结尾,求最长子序列,存入countArr[1]
        // 当以2结尾时,就可以取1的最长子序列作为参考(这就是动态规划的核心-取前面的累计值作为参考)
        for (int i = 1; i < arr.length; i++) {
            for (int j = 0; j < i; j++) {
                if (arr[j] < arr[i]) {
                    // countArr[j]表示目前截止j处最长子序列,那么countArr[i]最长就是countArr[j],
                    // 而arr[j] < arr[i],那么countArr[i]就+1,反之countArr[i]不变
                    countArr[i] = Math.max(countArr[j] + 1, countArr[i]);
                }
                max = Math.max(max, countArr[i]);
            }
        }
        System.out.println(max);
    }
}
全部评论

相关推荐

2024-12-12 13:02
已编辑
安徽师范大学 前端工程师
lllllkin:1、基本信息内至少三行废话; 2、专业能力描述 太笼统 没有与意向岗位明显匹配的细节能力 3、获奖经历 立项没用,不如写立项题目 你做了啥,况且 CET-4 默认具备 且 cet4 、‘立项’根本不算奖项, 计算机设计自己做的 都可以单独拉一个项目出来(没有就算了) 4、①②③③全是库库库,④ 听说你设计了一个 ‘通信’? ; 第二个:三行废话 ... 5、挺优秀的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客企业服务