首页 > 其他分享 >740. 删除并获得点数

740. 删除并获得点数

时间:2024-09-18 14:35:16浏览次数:12  
标签:740 删除 dp1 nums rob dp0 val 点数 total

题目链接 740. 删除并获得点数
思路 动态规划-打家劫舍-变体
题解链接 官方题解
关键点 优化版本:排序后,分段获取“连续子序列”的“打家劫舍值”后进行加和
时间复杂度 \(O(\#{\text{nums}}+\max\text{nums})\)或\(O(n)\)(优化版本)
空间复杂度 \(O(\max\text{nums})\)或\(O(n)\)(优化版本)

代码实现:

class Solution:
    def deleteAndEarn(self, nums: List[int]) -> int:
        maxv = max(nums)
        total = [0] * (maxv+1)
        for val in nums:
            total[val] += val
        
        def rob(nums):
            sz = len(nums)
            dp0 = dp1 = 0
            for x in nums:
                dp0, dp1 = dp1, max(dp1, dp0+x)
            return dp1
        return rob(total)

代码实现(优化版本):

class Solution:
    def deleteAndEarn(self, nums: List[int]) -> int:        
        def rob(nums):
            sz = len(nums)
            dp0 = dp1 = 0
            for x in nums:
                dp0, dp1 = dp1, max(dp1, dp0+x)
            return dp1
        
        n = len(nums)
        answer = 0
        nums.sort()
        total = [nums[0]]

        for i in range(1, n):
            val = nums[i]
            if val == nums[i-1]:
                total[-1] += val
            elif val == nums[i-1]+1:
                total.append(val)
            else:
                answer += rob(total)
                total = [val]
        answer += rob(total)
        return answer

标签:740,删除,dp1,nums,rob,dp0,val,点数,total
From: https://www.cnblogs.com/WrRan/p/18418463

相关文章

  • 电脑恢复分区删除的文件,5个神奇技巧,找回丢失资料
    我们的工作、生活和娱乐与电脑密切相连,里面存储着无数的照片、文件等数据。但天有不测风云,当发生意外导致分区的文件删除,就可能让我们陷入数据丢失的恐慌之中。不过别担心,王牌恢复专家小编申请出战!针对电脑恢复分区删除的文件,小编搜集了全网5个实用技巧。还不赶紧跟上,一起尝试......
  • u盘恢复数据,快速找回删除文件,请认准这4招
    U盘,作为我们日常生活中常见的存储工具,里边可能放着工作文档、学习资料或拍摄的美照。如果你在电脑上使用U盘时,不小心将数据删除了,该怎么办呢?别担心,关于u盘恢复数据,文章有办法可解!跟着小编的脚步,一起探索4招神器的恢复技巧吧!方法一:使用命令提示符,恢复u盘数据对于熟悉计算机......
  • Excel歪门邪道(1) — 用C#解决Excel修复文件后批注被删除的问题
    今天是2024年9月18日,中秋节刚过,狠下心来决定把原来发在CSDN的文章全部搬过来,倒不是因为文章被CSDN拿去白嫖或者是担心CSDN倒闭,而是觉得自己过去的29年生活自己活的像个小丑,如今已到而立之年被社会彻底淘汰已成定局,因此在离开这个世界之前,我还是决定把过往的一些没什么用的经验重新......
  • Day3:删除一个字符串中另一个字符串的内容
    题目:str1:welcometomyhousestr2:come删除str1中出现的所有str2的字符,删除之后结果为wltyhuspublicstaticvoidmain(String[]args){Stringstr1="welcometomyhouse";Stringstr2="come";ArrayList<Character>ret=newAr......
  • 在 Windows 上恢复已删除的 PDF 文件的最佳方法
    如果您不小心删除了PDF文件或由于系统突然崩溃而无法再找到它们,本指南介绍了恢复已删除文件的最佳方法。帖子中列出的方法简单、有效且可行。我们在列出它们之前对其进行了测试。什么是PDF,Adobe将未保存的PDF存储在哪里?自从Adobe开发可移植文档格式(PDF)以来,该格式......
  • 26.删除有序数组中的重复项 Golang实现
    题目描述:给你一个非严格递增排列的数组nums,请你原地删除重复出现的元素,使每个元素只出现一次,返回删除后数组的新长度。元素的相对顺序应该保持一致。然后返回nums中唯一元素的个数。考虑nums的唯一元素的数量为k,你需要做以下事情确保你的题解可以被通过:更改......
  • C语言:整数和浮点数在内存中的存储--(超好理解)
    目录一、整数在内存中的存储(有符号整数)1.设置反码和补码的的目的二、浮点数在内存中的存储1.浮点数取的过程2.例题解析总结目前学习到C语言的各种数据类型在内存中的存储的方式和过程,自己初学的时候下了很多时间去学习理解,为了帮助和自己一样的在第一次初学C语言存储......
  • 代码随想录Day4 | LeetCode 24. 两两交换链表中的节点、LeetCode 19. 删除链表的倒数
    LeetCode24.两两交换链表中的节点递归思想#Definitionforsingly-linkedlist.#classListNode:#def__init__(self,val=0,next=None):#self.val=val#self.next=nextclassSolution:defswapPairs(self,head:Optional[ListNode......
  • 浮点数的比较
    浮点数与"零值"精度损失:浮点值与实际值不等,可能偏大可能偏小,都属于精度损失验证浮点数是否存在精度损失验证浮点数的差值是否存在精度损失浮点数直接比较验证结论:浮点数在进行比较时,绝对不能使用双等号==来进行比较.浮点数本身有精度损失,进而导致结果可能有细......
  • 代码随想录算法训练营第四天|24两两交换链表中的节点 19删除链表的倒数第N个节点 02.0
    24.两两交换链表中的节点给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。由于今天赶时间,第一眼看完题目没思路就直接看文字解析了,但还是复述一下看完之后自己的理解/想法/思路。这一题感觉对......