LeetCode·每日一题·1186. 删除一次得到子数组最大和·动态规划

news/2024/11/15 2:08:47/

作者:小迅
链接:https://leetcode.cn/problems/maximum-subarray-sum-with-one-deletion/solutions/2321919/dong-tai-gui-hua-zhu-shi-chao-ji-xiang-x-cwvs/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

题目

 

示例

 

思路

题意 -> 给定一个数组,可以删除最多一个任意元素,返回子数组最大和

定义dp[arrSize][2]

  • dp[i][0] 表示选择当前元素 arr[i] 的最大和,dp[i][1] 表示删除一个元素的最大和。
  • 由于题意要求必须包含一个元素,所以初始化 dp[0][0] = arr[0], dp[0][1] = 0, 初始值必须包含一个元素,所以只能是arr[0],初始删除一个元素和肯定是为 0。
  • 当前位置的和肯定是取决于上一个位置的状态,所以递推方向肯定是从左至右的
  • 递推公式:
    • dp[i][0] = MAX(dp[i-1][0], 0) + arr[i];如果上一个位置和小于0的话,当前位置就为子数组开头
    • dp[i][1] = MAX(dp[i-1][1] + arr[i], dp[i-1][0]);删除一个元素可以分为删除当前元素和删除子数组其他元素,其中dp[i-1][0]表示删除当前元素,dp[i-1][1] + arr[i]表示删除其他元素
  • 每一步的取最大值保存

代码注释超级详细

代码


#define MAX(a, b) ((a) > (b) ? (a) : (b))
int maximumSum(int* arr, int arrSize) {int max = arr[0];int dp[arrSize][2];dp[0][0] = arr[0];dp[0][1] = 0;//初始化for (int i = 1; i < arrSize; i++) {dp[i][0] = MAX(dp[i-1][0], 0) + arr[i];//选择当前位置dp[i][1] = MAX(dp[i-1][1] + arr[i], dp[i-1][0]);//删除一个元素max = MAX(max, MAX(dp[i][0], dp[i][1]));//取每一个子数组最大值}return max;
}作者:小迅
链接:https://leetcode.cn/problems/maximum-subarray-sum-with-one-deletion/solutions/2321919/dong-tai-gui-hua-zhu-shi-chao-ji-xiang-x-cwvs/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


http://www.ppmy.cn/news/599780.html

相关文章

JavaGUI简易版贪吃蛇小游戏

做这个小游戏&#xff0c;主要是学习一下游戏制作的基本逻辑&#xff0c;加深对面向对象的理解。 游戏引擎: /*** 大牛程序员写的游戏的公共类 * 使用Game.init()方法初始化游戏* 使用Game.gameOver()方法退出游戏*/ public class Game extends JPanel {private GameEngine eng…

Dev-C++5.11游戏创作之贪吃蛇

各位朋友们好啊&#xff01;今天我为大家带来一个贪吃蛇游戏进阶版&#xff01; 如果点赞超过15个&#xff0c;1小时内立马更新哦&#xff01; em…音乐我就不说了&#xff0c;没有看过的小伙伴们可以在我的专栏里面看一看之前的飞机大战和自制金山打字通 OK&#xff01;上代…

Python版水果忍者源代码

切水果风靡一时的游戏&#xff0c;不知道为啥总是切刀炸掉&#xff0c;挺解压的游戏。完整程序包请在文末地址下载 主要程序 import pygame, sys import os import randomplayer_lives 3 #keep track of lives score 0 …

《游戏学习》| 水果忍者HTML5网页版在线游戏 | 源码分析

游戏介绍 这是一款由百度JS小组提供的HTML5版切水果游戏&#xff0c;这款基于HTML5实现的网页版切水果游戏虽然和原版的切水果游戏相比仍有美中不足之处&#xff0c;但也算有声有色&#xff0c;画面效果也十分炫目华丽。 游戏截图 主界面 游戏界面 结束界面 游戏目录 除了i…

Fruit Ninja(水果忍者)游戏源码 cocos2d

cocos2dx 实现的 风靡一时的智能机游戏 水果忍者 游戏《水果忍者》完整游戏源码&#xff0c;Android windows ios多平台编译运行 100%完整代码,源码编译 无bug运行 酷炫的梅花剑法(可以自己修改源码DIY 设计其他剑法) 冰冻技能 狂乱技能 双倍狂乱技能 普通模式 下载地址: 点我…

基于Cocos Creator的水果忍者游戏

基于cocos creater的水果忍者游戏 项目介绍主界面游戏界面游戏详情界面水果运动界面刀片切割界面游戏结束界面下载方式 项目介绍 互联网技术不断革新&#xff0c;用户对于应用的要求在不断提高&#xff0c;使得技术标准也在不断进步。JavaScript的产生使得互联网有了很大进步&…

2017级C语言大作业 - 水果忍者

水果忍者 C语言作业 分享17级同学大一上学期用C语言实现的水果忍者。分步骤代码、图片音乐素材、可执行程序可从百度网盘下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1i-e_MVChl4fIUSiPBnNp-Q 提取码&#xff1a;67lj 设计思路 我们小组经过在4399网站上试玩游戏…

Scratch少儿编程案例-水果忍者-简约风

专栏分享 点击跳转=>Unity3D特效百例点击跳转=>案例项目实战源码点击跳转=>游戏脚本-辅助自动化点击跳转=>Android控件全解手册点击跳转=>Scratch编程案例👉关于作者