题解 | #删除相邻数字的最大分数#

删除相邻数字的最大分数

http://www.nowcoder.com/practice/3bcf72c738b6494bbe1ebe0ffde56152

将数组进行转化 nums[i] => trans[nums[i]] += nums[i] 数组下标对应选择的总和 转化为dp[i] = Math.max(dp[i - 1], dp[i - 2] + trans[i])的问题

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner reader = new Scanner(System.in);
        int n = reader.nextInt();
        int[] p = new int[n];
        for (int i = 0; i < n; i++) {
            p[i] = reader.nextInt();
        }
        int[] dp = new int[10001];
        int[] trans = new int[10001];
        for (int i = 0; i < p.length; i++) {
            trans[p[i]] += p[i];
        }
        dp[0] = 0;
        dp[1] = trans[1];
        for (int i = 2; i < trans.length; i++) {
            dp[i] = Math.max(dp[i - 1], dp[i - 2] + trans[i]);
        }
        System.out.println(dp[dp.length - 1]);
    }
}
全部评论
为什么要设置int[] dp = new int[10001],而不能设置成int[] dp = new int[n]?
点赞 回复 分享
发布于 2022-11-15 15:05 湖北

相关推荐

不愿透露姓名的神秘牛友
11-24 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
11-14 16:13
已编辑
重庆科技大学 测试工程师
Amazarashi66:不进帖子我都知道🐮❤️网什么含金量
点赞 评论 收藏
分享
6 1 评论
分享
牛客网
牛客企业服务