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

news2024/9/25 13:19:19

作者:小迅
链接: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.coloradmin.cn/o/696310.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

XILINX 7系列FPGA Dedicated Configuration Bank功能详解

&#x1f3e1;《Xilinx FPGA开发指南》 目录 1&#xff0c;概述2&#xff0c;功能详解2.1&#xff0c;DXP_0与DXN_02.2&#xff0c;VCCBATT_02.3&#xff0c;INIT_B_02.4&#xff0c;M0_0&#xff0c;M1_0&#xff0c;M2_02.5&#xff0c;TDI,TDO,TMS,TCK2.6&#xff0c; VCCAD…

【Unity开发小技巧】UnityWebGL打包本地浏览器运行查看

目录 一.前言&#xff1a; 二.WebGL打包 三.配置web.config&#xff08;重要&#xff09; 四.部署IIS 五.测试 一.前言&#xff1a; 正常打包WebGL后在浏览器直接运行会报以下这个错&#xff1a; It seems your browser does not support running Unity WebGL content fr…

【效率工具】Windows 10 终端自动补全、智能提示

1. 安装PSReadLine 2.1.0 Install-Module PSReadLine -RequiredVersion 2.1.02. 检查是否存在配置文件 Test-path $profile创建配置文件&#xff08;不存在的话&#xff09; New-item –type file –force $profile3. 编辑配置文件 notepad $profile4. 运行该指令后退出终端…

rancher-import-k8s集群

一、 二、 三、 四、 到k8s 节点服务器上执行&#xff1a; 其实在&#xff1a;https://192.168.31.105:8443/v3/import/fgmt2r88wn4xvkm9n88gnshhhb8l976n6rpdvgz79r6rsfhlljnsxn_c-m-kq6c2fvn.yaml 里面下载了镜像 我们可以先下载镜像&#xff1a; docker pull rancher/ranc…

CSDN-AI小组2023-半年-研发总结

目录 1.丐版「大模型」&#xff0c;Proof of concept2. LLM和AIGC的各种综述3. 基于Embedding的应用&#xff0c;问答&#xff0c;AI编程4. 评论区的AI助手5. 结合AIGC的各种数据自动计算6. 个性化推荐的系统重构7. 基于AIGC的个性化博客创作鼓励8. 博客质量分V5: 可解释性计算…

java基础之super

当父类拥有一个带参的构造方法时&#xff0c;子类要有一个带有相同类型参数的构造方法&#xff0c;并且第一行使用super&#xff08;参数&#xff09;来接受&#xff0c;否则会报错 上图是一个类 Two&#xff0c;拥有一个带String类型参数的构造方法。 上图是一个类One&#x…

Java数字图像处理教程

地址 Java DIP - GrayScale转换为了将彩色图像转换为灰度图像&#xff0c;您需要使用File和ImageIO对象读取图像的像素或数据&#xff0c;并将图像存储在BufferedImage对象中。其语法如下&#xff1a; File input new File("digital_image_processing.jpg"); Buffe…

PHP --- 登录界面构建与mysql交互

登录界面构建与mysql交互 环境准备 win2003server phpstudy2016 vscode &#xff08;1&#xff09;login.html 利用input表单就可构建简单登录界面<fieldset>标签&#xff1a;框住标签内容<legend>标签&#xff1a;为filedset标签添加标题<label>标签&am…

UE5.1.1 C++从0开始(15.作业4个人作业分享)

教程链接&#xff1a;https://www.bilibili.com/video/BV1nU4y1X7iQ 好吧这个作业应该是之前写的&#xff0c;但是我发现我没写&#xff0c;后面我又回去自己写了一遍再看代码&#xff0c;感觉上大差不差&#xff0c;各位可以看着我的和老师的还有自己的对比下。 SBTService_…

display:flex的用法

flex: 元素以弹性布局方式显示&#xff0c;可以通过设置父元素的 display: flex 属性来实现子元素的弹性布局。常用于实现响应式布局和灵活的元素排列。 当使用 display: flex; 将元素容器设置为弹性布局时&#xff0c;子元素会自动填充容器&#xff0c;并根据容器的宽度进行调…

python实现磨皮效果

主要是借鉴了这个文章&#xff0c;写的非常棒&#xff0c;会比直接使用保边滤波好很多&#xff0c;能够高保真&#xff0c;不会糊掉。 我使用python简单的实现了一下&#xff0c;看起来还不错 import time import numpy as np import cv2def mopi(src):high_pass src.copy()…

【Docker】Docker运行时间长,空间不足no space left on device: unknown

空间不足no space left on device: unknown问题解决 1.执行出错2.解决方法3.dump文件是否可以删除 1.执行出错 在运行 docker restart 容器Id查看磁盘空间占用 df -h2.解决方法 这个问题是由与 /run 的空间使用完了&#xff0c;清理/run的空间,经过查找使用最大的是 /run/u…

Linux 情景分析

系列文章目录 Linux 内核设计与实现 深入理解 Linux 内核 Linux 设备驱动程序 Linux设备驱动开发详解 深入理解Linux虚拟内存管理 Linux 情景分析 文章目录 系列文章目录一、存储管理1、外部设备存储空间的地址映射&#xff08;1&#xff09;ioremap&#xff08;2&#xff09;g…

力扣 513. 找树左下角的值

题目来源&#xff1a;https://leetcode.cn/problems/find-bottom-left-tree-value/description/ C题解1&#xff1a;是寻找最底层最左边的节点&#xff0c;不是最底层的左子树节点&#xff01; &#xff01; 使用层序遍历&#xff0c;判断左右子树是不是叶子节点&#xff0c;进…

snmp_exporter监控交换机网络流量

一.背景与需求 最近收到机房账单多出了将近70M下行带宽&#xff0c;多交了8K多的费用&#xff0c;很是蛋疼。IDC机房使用每月保底带宽模式, 例如保底100M带宽/月&#xff0c;如果利用955计费方式&#xff0c;没超出100M则只收机柜和保底带宽的费用&#xff0c;如果超出1M则按照…

资本和技术的两个死结

技术与资本的两个死结 资本从一开始就俘获了技术 没有资本主义 就没有科学和技术 以前肯定是科技的崇拜者 现在多了一个视角 趣讲大白话&#xff1a;自己给自己挖坟 【趣讲信息科技210期】 **************************** 搞科学的看不起搞技术的 科学和技术确实是两码事 但最后…

LabVIEW里计算当前时间起前几个月的时间段

在查询数据时&#xff0c;可能会用到从某个时间开始&#xff0c;前几个月的数据&#xff0c;这时就需要计算出查询的历史时间&#xff0c;该如何计算呢&#xff1f;如图&#xff1a; 注意点&#xff1a; 1、日应该是当前日期的后一天。 2、当前的月数与历史的月数相等时的处置…

使用shiro框架进行认证拦截

01.需要添加依赖 在springboot项目中&#xff0c;使用shiro框架需要在pom.xml文件中去添加依赖&#xff1a; org.apache.shiro shiro-spring 1.4.1 02.shiro核心对象配置 这里需要配置一个配置类&#xff0c;使用的注解是Configuration&#xff0c;这表示修饰的类会有多个注…

Nacos集群版本升级2.2.3

官方传送 官方文档传送门 记录日期 2023-06-28 背景简介 当前Nacos版本为2.1.0&#xff0c;集群部署与官方文档一致&#xff0c;通过阿里云负载均衡SLB服务挂载3台ECS提供服务&#xff0c;如图&#xff1a; 近期有漏洞Nacos 内网集群Raft 反序列化漏洞披露。 影响版本 …

leecode-寻找重复数字

题目 题目 分析 哇哦&#xff0c;原来vector可以这样初始化&#xff0c;学到了&#xff01;&#xff01; 不初始化会直接报错嘞&#xff01; 代码 class Solution { public:int findDuplicate(vector<int>& nums) {vector<bool> v(nums.size(),false);//…