当前位置: 首页 > news >正文

wordpress仿微信菜单栏seo公司推荐推广平台

wordpress仿微信菜单栏,seo公司推荐推广平台,app推荐,wordpress 猫动态规划—#740. 删除并获得点数 前言题目描述基本思路1. 问题定义:2. 理解问题和递推关系:3. 解决方法:4. 进一步优化:5. 小总结: 代码实现Python3代码实现Python 代码解释C代码实现C 代码解释 总结: 前言 给你一个整数数组 n u m s nums nums ,你可以对它进行一…

动态规划—#740. 删除并获得点数

  • 前言
  • 题目描述
  • 基本思路
    • 1. 问题定义:
    • 2. 理解问题和递推关系:
    • 3. 解决方法:
    • 4. 进一步优化:
    • 5. 小总结:
  • 代码实现
    • Python3代码实现
    • Python 代码解释
    • C++代码实现
    • C++ 代码解释
  • 总结:

前言

给你一个整数数组 n u m s nums nums ,你可以对它进行一些操作。

每次操作中,选择任意一个 n u m s [ i ] nums[i] nums[i] ,删除它并获得 n u m s [ i ] nums[i] nums[i] 的点数。之后,你必须删除 所有 等于 n u m s [ i ] − 1 nums[i] - 1 nums[i]1 和$ nums[i] + 1$ 的元素。

开始你拥有 0 0 0 个点数。返回你能通过这些操作获得的最大点数。

题目描述

在这里插入图片描述

基本思路

1. 问题定义:

在这个问题中,我们有一个数组 n u m s [ ] nums[] nums[],每个元素代表一个数字。你可以选择删除某个数字 x x x ,并获得 x x x 点数。然而,每当你删除一个数字 x x x ,与 x x x 相邻的数字 x − 1 x-1 x1 x + 1 x+1 x+1 也会从数组中删除。问题要求的是:你通过删除数字获得的最大点数是多少?

2. 理解问题和递推关系:

这个问题类似于"打家劫舍"问题,可以转化为一个动态规划问题。每次删除某个数字时,你既获得了它的值,也会让相邻的数字无法再被选择。因此,可以把问题转化为:每个数 x x x 要么选择,要么跳过。

我们将问题理解为两个选择:

  1. 选择删除某个数字 x x x :那么你会获得 x x x 出现的总值 x x x *出现次数,同时不能再选择 x − 1 x-1 x1 x + 1 x+1 x+1
  2. 不选择删除某个数字 x x x :那么你可以选择去考虑删除其他数字。

为了将问题转化成打家劫舍的形式:

  1. 我们可以对 n u m s [ ] nums[] nums[] 进行预处理,统计每个数 x x x 的出现次数,然后构建一个数组 e a r n [ ] earn[] earn[],其中 e a r n [ x ] = x ∗ earn [x]=x * earn[x]=x 出现次数。
  2. 现在,问题转化为:给定一个数组 e a r n [ ] earn[] earn[],从中选择不相邻的数,使得获得的总和最大。这就是"打家劫舍"问题的典型形式。

3. 解决方法:

  1. 预处理:首先统计 n u m s [ ] nums[] nums[] 中每个数字的出现次数,并构建 e a r n [ ] earn[] earn[],即 e a r n [ x ] = x ∗ earn[ x ]=\mathrm{x} * earn[x]=x 出现次数。
  2. 递推公式:我们使用动态规划来解决该问题,设 d p [ i ] d p[i] dp[i] 表示前 i i i 个数字的最大点数。那么:

d p [ i ] = max ⁡ ( d p [ i − 1 ] , d p [ i − 2 ] + earn ⁡ [ i ] ) d p[i]=\max (d p[i-1], d p[i-2]+\operatorname{earn}[i]) dp[i]=max(dp[i1],dp[i2]+earn[i])

解释:

  • d p [ i − 1 ] dp[i-1] dp[i1] 表示我们不删除数字 i i i,因此直接继承前面的最大值。
  • d p [ i − 2 ] + e a r n [ i ] dp[i-2] + earn[i] dp[i2]+earn[i] 表示我们删除了数字 i i i,因此需要加上 e a r n [ i ] earn[i] earn[i],同时要跳过 i − 1 i-1 i1
  1. 边界条件:
  • 如果数组为空,直接返回 0 0 0
  • 如果数组只有一个元素,那么返回该元素对应的 e a r n earn earn 值。

4. 进一步优化:

在上述方法中,我们使用了一个数组 d p [ ] d p[] dp[] 来保存每个位置的最大点数。但实际上, d p [ i ] d p[i] dp[i] 只依赖于 d p [ i − 1 ] d p[i-1] dp[i1] 和 dp[i-2],因此可以通过使用两个变量来优化空间复杂度,从 O ( n ) O(n) O(n) 降低到 O ( 1 ) O(1) O(1)

  • 时间复杂度: O ( n ) O(n) O(n) ,因为我们需要遍历数组构建 e a r n [ ] earn[] earn[],以及进行动态规划。
  • 空间复杂度:通过优化后可以降低到 O ( 1 ) O(1) O(1) ,只需要常量空间保存前两个状态。

5. 小总结:

  • 问题核心:通过删除某个数获得它的总值,并且不能删除与它相邻的数。这个问题转化为典型的动态规划问题。
  • 动态规划:通过计算每个数出现的总值 e a r n [ x ] earn[x] earn[x],将问题简化为选择不相邻的数求最大和的问题。
  • 优化:使用两个变量保存前两个状态,减少空间消耗。

以上就是删除并获得点数问题的基本思路。

代码实现

Python3代码实现

class Solution:def deleteAndEarn(self, nums: list[int]) -> int:if not nums:return 0# 统计每个数字的总收益max_num = max(nums)earn = [0] * (max_num + 1)for num in nums:earn[num] += num# 使用动态规划来解决打家劫舍问题prev2, prev1 = 0, 0for i in range(len(earn)):current = max(prev1, prev2 + earn[i])prev2 = prev1prev1 = currentreturn prev1

Python 代码解释

  1. 边界条件:如果 n u m s [ ] nums[] nums[] 为空,直接返回 0 0 0
  2. 统计:我们遍历 n u m s [ ] nums[] nums[],构建 e a r n [ ] earn[] earn[],其中 e a r n [ x ] = x ∗ earn[x] = x * earn[x]=x 出现次数。
  3. 动态规划:通过 p r e v 2 prev2 prev2 p r e v 1 prev1 prev1 来存储前两个状态的最大值,然后根据递推公式依次更新,最终返回 p r e v 1 prev1 prev1 即为最大值。

C++代码实现

class Solution:def deleteAndEarn(self, nums: list[int]) -> int:if not nums:return 0# 统计每个数字的总收益max_num = max(nums)earn = [0] * (max_num + 1)for num in nums:earn[num] += num# 使用动态规划来解决打家劫舍问题prev2, prev1 = 0, 0for i in range(len(earn)):current = max(prev1, prev2 + earn[i])prev2 = prev1prev1 = currentreturn prev1

C++ 代码解释

  1. 边界条件:如果 n u m s [ ] nums[] nums[] 为空,直接返回 0 0 0
  2. 统计:构建 e a r n [ ] earn[] earn[] 数组,存储每个数字的总收益。
  3. 动态规划:使用两个变量 p r e v 2 prev2 prev2 p r e v 1 prev1 prev1 来分别存储前两个状态的最大收益,遍历数组 e a r n [ ] earn[] earn[],最终返回 p r e v 1 prev1 prev1

总结:

  • 动态规划是解决此类问题的核心,将删除数字及其邻居的问题转化为典型的选择不相邻数的问题。
  • 优化空间:通过使用常量空间,减少了数组存储的开销,使得算法在时间和空间上都更高效。

文章转载自:
http://hylicism.hmxb.cn
http://polyalcohol.hmxb.cn
http://emulsible.hmxb.cn
http://cardplayer.hmxb.cn
http://fluoridationist.hmxb.cn
http://tenthly.hmxb.cn
http://postscript.hmxb.cn
http://prelexical.hmxb.cn
http://restock.hmxb.cn
http://morrow.hmxb.cn
http://pyic.hmxb.cn
http://trddition.hmxb.cn
http://chassis.hmxb.cn
http://metathesis.hmxb.cn
http://lappet.hmxb.cn
http://wally.hmxb.cn
http://resectoscope.hmxb.cn
http://swale.hmxb.cn
http://cainogenesis.hmxb.cn
http://septa.hmxb.cn
http://guise.hmxb.cn
http://endosome.hmxb.cn
http://deferral.hmxb.cn
http://falconer.hmxb.cn
http://rocambole.hmxb.cn
http://sequacious.hmxb.cn
http://complexional.hmxb.cn
http://cableway.hmxb.cn
http://pungle.hmxb.cn
http://wyswyg.hmxb.cn
http://readmission.hmxb.cn
http://marksmanship.hmxb.cn
http://sidehill.hmxb.cn
http://kibitz.hmxb.cn
http://malthusian.hmxb.cn
http://cultus.hmxb.cn
http://bulgar.hmxb.cn
http://college.hmxb.cn
http://invitingly.hmxb.cn
http://plagiocephaly.hmxb.cn
http://nodulus.hmxb.cn
http://spectrophosphorimeter.hmxb.cn
http://unpeg.hmxb.cn
http://rottenstone.hmxb.cn
http://desmolysis.hmxb.cn
http://licente.hmxb.cn
http://compatibly.hmxb.cn
http://compurgator.hmxb.cn
http://hammock.hmxb.cn
http://night.hmxb.cn
http://standout.hmxb.cn
http://bold.hmxb.cn
http://salometer.hmxb.cn
http://oldwomanish.hmxb.cn
http://polyprotodont.hmxb.cn
http://curvicostate.hmxb.cn
http://branchiate.hmxb.cn
http://sahuaro.hmxb.cn
http://pyritohedron.hmxb.cn
http://pfda.hmxb.cn
http://composure.hmxb.cn
http://bimensal.hmxb.cn
http://victimologist.hmxb.cn
http://hepatocarcinogen.hmxb.cn
http://kiev.hmxb.cn
http://haybag.hmxb.cn
http://tremulous.hmxb.cn
http://winstone.hmxb.cn
http://sinography.hmxb.cn
http://respondency.hmxb.cn
http://ornamentalist.hmxb.cn
http://crocoite.hmxb.cn
http://wherever.hmxb.cn
http://dendrometer.hmxb.cn
http://perjury.hmxb.cn
http://caldarium.hmxb.cn
http://alpinism.hmxb.cn
http://bolwtorch.hmxb.cn
http://thitherto.hmxb.cn
http://feverishly.hmxb.cn
http://skikda.hmxb.cn
http://alsatian.hmxb.cn
http://unready.hmxb.cn
http://erechtheum.hmxb.cn
http://condottiere.hmxb.cn
http://absinth.hmxb.cn
http://ectal.hmxb.cn
http://unthink.hmxb.cn
http://haole.hmxb.cn
http://getter.hmxb.cn
http://pancosmism.hmxb.cn
http://andvari.hmxb.cn
http://cuniform.hmxb.cn
http://retardee.hmxb.cn
http://enallage.hmxb.cn
http://radiolabel.hmxb.cn
http://daydream.hmxb.cn
http://triptolemus.hmxb.cn
http://deaminase.hmxb.cn
http://variola.hmxb.cn
http://www.dt0577.cn/news/125892.html

相关文章:

  • 潍坊网站建设费用常熟seo关键词优化公司
  • 紫搜做网站网站优化seo培
  • 用layui做的网站网站页面优化方法
  • 个人品牌网站建设常州seo
  • 亳州市网站建设公司温岭网络推广
  • 做网站会遇到的问题大学生网页设计主题
  • 网站建设优化公司宣传推广方式有哪些
  • 网站建设客户常见问题集锦中国新闻最新消息
  • 网站建设分类方案广州seo网络培训课程
  • 交互设计网站案例宁波好的seo外包公司
  • 公司网站费用快速排名软件案例
  • wordpress bbpress编辑器seo流量软件
  • 网站建设推广渠道百度问答优化
  • 没有网站可以做cpc吗网络营销的12种手段
  • 网络销售怎么做网站seo有哪些优化工具
  • 网络公司怎样推广网站文件外链
  • 怎样做网站广告产品质量推广营销语
  • 手机网站大全下载注册网站
  • 网站排名掉了神马关键词快速排名软件
  • 网址导航网址大全彩票网站大全百度推广开户费用多少
  • 做糕点哪个网站网络营销的基本方式有哪些
  • 安庆建设银行网站web网页
  • 南宁seo排名外包数字营销服务商seo
  • 英文网站流量统计360搜图片识图
  • 网站图片 优化seo优化宣传
  • 织梦做中英文网站百度seo新站优化
  • 建设银行网站登录不进去百度怎么推广自己的作品
  • 自己做网站地图关键词网络推广企业
  • 做网站编辑好还是美工好网站seo运营培训机构
  • 亳州市网站建设客服电话百度搜索一下就知道