获得最大的利益
Submit solution
Points:
370
Time limit:
1.0s
Memory limit:
10M
Author:
Problem type
Allowed languages
C, C++
给你一个整数数组 nums,你可以任意次执行以下操作来获得尽可能多的积分:
- 从数组中选择任意一个元素 nums[i],将其删除并获得 nums[i] 分;
- 然后,你必须同时删除所有等于 nums[i] - 1 和 nums[i] + 1 的元素。
请你返回,在若干次操作后你最多可以获得多少积分。
第一行输入一个整数n
第二行输入n个整数,用空格隔开
示例 1:
输入:
3
3 4 2
输出: 6
解释:
- 删除 4,获得 4 分;同时删除 3。此时 nums = [2]
- 删除 2,获得 2 分;nums = []
- 总共得分为 \(4 + 2 = 6\)
示例 2:
输入:
6
2 2 3 3 3 4
输出:
9
解释:
- 删除一个 3,获得 3 分,同时删除所有 2 和 4;nums = [3, 3]
- 删除一个 3,获得 3 分;nums = [3]
- 删除一个 3,获得 3 分;nums = []
总共得分为 \(3 + 3 + 3 = 9\)
约束条件:
\(1 \le nums.length \le 20,000\)
\(1 \le nums[i] \le 10,000\)
Comments