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

删除相邻数字的最大分数

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

import java.util.Scanner;
import java.util.*;
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
           int a = in.nextInt();
            int[] data = new int[a];
            Map<Integer,Integer> dpTree = new HashMap<>();
            Integer max = 0;
            for (int i=0;i<data.length;i++) {
                data[i] = in.nextInt();
                dpTree.put(data[i],dpTree.getOrDefault(data[i], 0) + data[i]);
                max = Math.max(max,data[i]);
            }

            int[] dp = new int[max+1];

            for (int i=0;i<= max;i++) {
                if (i == 0) {
                    dp[i] = dpTree.getOrDefault(i, 0);
                    continue;
                }
                if (i == 1) {
                    dp[i] = Math.max(dpTree.getOrDefault(0, 0),dpTree.getOrDefault(1, 0) );
                    continue;
                }
                dp[i] = Math.max(dp[i-1], dp[i-2] + dpTree.getOrDefault(i, 0));
            }
            System.out.println(dp[max]);
        }
    }
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 18:13
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
昨天 17:30
点赞 评论 收藏
分享
05-09 13:22
门头沟学院 Java
点赞 评论 收藏
分享
投递长鑫存储等公司8个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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