zoukankan      html  css  js  c++  java
  • 740. Delete and Earn

    #week14

    Given an array nums of integers, you can perform operations on the array.

    In each operation, you pick any nums[i] and delete it to earn nums[i] points. After, you must delete every element equal to nums[i] - 1 or nums[i] + 1.

    You start with 0 points. Return the maximum number of points you can earn by applying such operations.

    Example 1:

    Input: nums = [3, 4, 2]
    Output: 6
    Explanation: 
    Delete 4 to earn 4 points, consequently 3 is also deleted.
    Then, delete 2 to earn 2 points. 6 total points are earned.
    

    Example 2:

    Input: nums = [2, 2, 3, 3, 3, 4]
    Output: 9
    Explanation: 
    Delete 3 to earn 3 points, deleting both 2's and the 4.
    Then, delete 3 again to earn 3 points, and 3 again to earn 3 points.
    9 total points are earned.
    

    Note:

    • The length of nums is at most 20000.
    • Each element nums[i] is an integer in the range [1, 10000].

    题解:

     1 class Solution {
     2 public:
     3     int deleteAndEarn(vector<int>& nums) {
     4         int n = 10001;
     5         vector<int> values(n, 0);
     6         for (int num : nums)
     7             values[num] += num;
     8 
     9         int take = 0, skip = 0;
    10         for (int i = 0; i < n; i++) {
    11             int takei = skip + values[i];
    12             int skipi = max(skip, take);
    13             take = takei;
    14             skip = skipi;
    15         }
    16         return max(take, skip);
    17     }
    18 };
  • 相关阅读:
    ubuntu1604安装微信
    python中汉字 hash值
    python-json
    lvm 扩展目录大小
    python数据可视化编程实战
    python-数据分析
    爬虫学习路径
    415. 字符串相加-字符串-简单
    43. 字符串相乘-字符串-中等难度
    44. 通配符匹配-动态规划-困难
  • 原文地址:https://www.cnblogs.com/iamxiaoyubei/p/8278273.html
Copyright © 2011-2022 走看看