zoukankan      html  css  js  c++  java
  • [每日一题] leetcode 740. 删除并获得点数

    统计每个值所能获得的点数

    dp 从终态考虑转移方程!!!

    dp[i][0]表示第i个数保留

    dp[i][1]表示删除第i个数

    dp[n][0] = dp[n - 1][1];

    dp[n][1] = max(dp[n - 2][0], dp[n - 2][1]) + a[n];

    class Solution {
    public:
        int dp[20010][2];
        int num[20010];
        int deleteAndEarn(vector<int>& nums) {
            memset(dp, 0, sizeof(dp));
            memset(num, 0, sizeof(num));
            int n = nums.size();
            for(int i = 0; i < n; i++)
            {
                if(num[nums[i]] == 0)
                    num[nums[i]] = nums[i];
                else num[nums[i]] += nums[i];
            }
            dp[1][0] = 0;
            dp[1][1] = num[1];
            for(int i = 2; i <= 20000; i++)
            {    dp[i][0] = dp[i - 1][1];
                dp[i][1] = max(dp[i - 2][0], dp[i - 2][1]) + num[i];
            }
            return max(dp[20000][0], dp[20000][1]);
    
        }
    };
    自己选择的路,跪着也要走完。朋友们,虽然这个世界日益浮躁起来,只要能够为了当时纯粹的梦想和感动坚持努力下去,不管其它人怎么样,我们也能够保持自己的本色走下去。
  • 相关阅读:
    kvm
    docker及lvs负载
    zookeeper,及k8s基础概念
    zabbix-proxy及ELK
    gitlab及jenkins
    绘图 Matplotlib Numpy Pandas
    Elasticsearch
    Git命令小结
    win黑窗口命令
    Linux基础命令
  • 原文地址:https://www.cnblogs.com/WTSRUVF/p/14730980.html
Copyright © 2011-2022 走看看