740. 删除并获得点数
凭着感觉,莫名其妙迷迷糊糊地就通过了,自己也不知道怎么就过了
class Solution { public: int deleteAndEarn(vector<int>& nums) { int maxNum = *(max_element(nums.begin(), nums.end())); vector<int> countNum(maxNum + 1); for(int &num : nums) ++countNum[num]; vector<int> dp(maxNum + 1);//dp[i]代表直到 数字 i 所能得到的最大点数
if(countNum[1] != 0){ dp[1] = countNum[1]; } for(int i = 2;i <= maxNum;++i){ dp[i] = max(i * countNum[i] + dp[i - 2],dp[i - 1]); } return dp[maxNum]; } };
来源链接:https://www.cnblogs.com/uacs2024/p/18638779
没有回复内容