【LeetCode】删除并获得点数 Java 题解
题目描述
给你一个整数数组 nums ,你可以对它进行一些操作。
每次操作中,选择任意一个 nums[i] ,删除它并获得 nums[i] 的点数。之后,你必须删除每个等于 nums[i] - 1 或 nums[i] + 1 的元素。
开始你拥有 0 个点数。返回你能通过这些操作获得的最大点数。
复制代码
思路
一般求最值的问题,动态规划是一种很好用的解法,我们可以按照动态规划的思路来思考分析问题。
这个题目认真分析之后,发现和之前做过的打家劫舍问题很像。我们可以转换成为打家劫舍问题。
AC 代码
复制代码
总结
上述代码的时间复杂度是 O(n), 空间复杂度是 O(n)
坚持每日一题,加油!
版权声明: 本文为 InfoQ 作者【HQ数字卡】的原创文章。
原文链接:【http://xie.infoq.cn/article/37eaee11125c3889c70aff663】。文章转载请联系作者。
评论