lc.740.删除并获得点数
文章目录
740. 删除并获得点数
Difficulty: 中等
给你一个整数数组 nums
,你可以对它进行一些操作。
每次操作中,选择任意一个 nums[i]
,删除它并获得 nums[i]
的点数。之后,你必须删除 所有 等于 nums[i] - 1
和 nums[i] + 1
的元素。
开始你拥有 0
个点数。返回你能通过这些操作获得的最大点数。
示例 1:
|
|
示例 2:
|
|
提示:
1 <= nums.length <= 2 * 10^4
1 <= nums[i] <= 10^4
Solution
解题思路
这个问题也可以转化为 求有向图的最长路径问题
建模方法:
- 设 有向图的边权 为 收益
- $f(i->j) = w_{i,j}$
由于删除 u 就删除了所有的 u-1 和 u + 1, 这里 我们就可以理解为打家劫舍问题
$dp[i] = max(dp[i-1],dp[i-2] + profit(i))$
Language: ****
|
|
文章作者 LYR
上次更新 2021-08-14