LeetCode 1186. 删除一次得到子数组最大和(DP)

1. 题目

给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和

换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只能删一次哦),(删除后)子数组中至少应当有一个元素,然后该子数组(剩下)的元素总和是所有子数组之中最大的。

注意,删除一个元素后,子数组 不能为空。

示例 1:
输入:arr = [1,-2,0,3]
输出:4
解释:我们可以选出 [1, -2, 0, 3],然后删掉 -2,这样得到 [1, 0, 3],和最大。示例 2:
输入:arr = [1,-2,-2,3]
输出:3
解释:我们直接选出 [3],这就是最大和。示例 3:
输入:arr = [-1,-1,-1,-1]
输出:-1
解释:最后得到的子数组不能为空,所以我们不能选择 [-1] 并从中删去 -1 来得到 0。我们应该直接选择 [-1],或者选择 [-1, -1] 再从中删去一个 -1。提示:
1 <= arr.length <= 10^5
-10^4 <= arr[i] <= 10^4

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-subarray-sum-with-one-deletion
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

  • dp[i][0]表示到以i位置为结束,没有删除过元素,最大数组和
  • dp[i][1]表示到以i位置为结束,删除过1个元素,最大数组和
class Solution {
public:int maximumSum(vector<int>& arr) {int i, n = arr.size(), maxSum = INT_MIN;vector<vector<int>> dp(n, vector<int>(2,INT_MIN));dp[0][0] = arr[0];//0位置,不删除元素,最大子序和dp[0][1] = 0; //0位置,删除元素,最大子序和maxSum = arr[0];for(i = 1; i < n; ++i){// i-1 位置处之前没有删除过,i位置处也不删, 或者 只有 i 自己dp[i][0] = max(arr[i], dp[i-1][0]+arr[i]);maxSum = max(maxSum, dp[i][0]);// i-1 位置之前删除过,i位置处不删   或者   i-1之前没有删,删除 i 位置dp[i][1] = max(dp[i-1][1]+arr[i], dp[i-1][0]);maxSum = max(maxSum, dp[i][1]);}return maxSum;}
};

164 ms 33.2 MB

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/475640.shtml

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

相关文章

可遇不可求的Question之不支持一个STA 线程上针对多个句柄的WaitAll

不支持一个 STA 线程上针对多个句柄的 WaitAll。 题设: 在.NET开发多线程控制台程序过程中,由于业务要求,需要实现"一次扫描多笔订单",然后,通过多线程实现并发提交的逻辑.因此,在控制台程序中采用了多线程记录.由于下一次操作必须等待所有的记录并发提交完成后,才能…

mysql一图秒懂秒清晰 - join连接 ,left join左连接 ,right join右连接 ,inner join内连接

前言&#xff1a;zuo表和you表短短五行涵盖了数据中所有可能遇见的情况&#xff1a; 1.左表有重复值&#xff08;合同号1134&#xff09;&#xff1b; 2.右表有重复值&#xff08;合同号1133&#xff09;&#xff1b; 3.左表存在右表没有的合同号&#xff08;合同号1188&#x…

LeetCode 904. 水果成篮(滑动窗口)

1. 题目 在一排树中&#xff0c;第 i 棵树产生 tree[i] 型的水果。 你可以从你选择的任何树开始&#xff0c;然后重复执行以下步骤&#xff1a; 把这棵树上的水果放进你的篮子里。如果你做不到&#xff0c;就停下来。移动到当前树右侧的下一棵树。如果右边没有树&#xff0c;…

mysql远程访问

MySQL 安装完成后只支持 localhost 访问&#xff0c;我们必须设置一下才可以远程访问&#xff0c;另外还有一些 MySQL 8.0 连接时的一些问题&#xff0c;本文也会一并进行讲解如何解决。1.登录MySQL并输入密码 &#xff0c;选择 mysql 数据库&#xff08;存储了用户信息的 user…

详细解析Java中抽象类和接口的区别(很容易理解错)

2007-09-28 12:17作者&#xff1a;doublel出处&#xff1a;论坛整理责任编辑&#xff1a;方舟在Java语言中&#xff0c; abstract class 和interface是支持抽象类定义的两种机制。正是由于这两种机制的存在&#xff0c;才赋予了Java强大的 面向对象能力。abstract class和inter…

LeetCode 910. 最小差值 II(贪心)

1. 题目 给定一个整数数组 A&#xff0c;对于每个整数 A[i]&#xff0c;我们可以选择 x -K 或是 x K&#xff0c;并将 x 加到 A[i] 中。 在此过程之后&#xff0c;我们得到一些数组 B。 返回 B 的最大值和 B 的最小值之间可能存在的最小差值。 示例 1&#xff1a; 输入&a…

行业分析-实战价值方法

都是工作中总结的方法&#xff0c;可能理论基础不是那么高大上&#xff0c;但是非常有实战价值。 1.行业研究维度 2.行业景气度 3.行业间关系(敏感性计算) 4.行业成长性

java中finalizer终结方法学习心得

最近在看java的中finalizer终结方法&#xff0c;也就是用来释放内存的&#xff0c;但这绝对和C中的析构函数不相同 C中的析构函数是用来回收对象所占用的资源的方法&#xff0c;而在java中&#xff0c;当一个对象不可到达时&#xff08;也就是重堆栈和静态存储区开始&#xff0…

LeetCode 1296. 划分数组为连续数字的集合(map模拟)

1. 题目 给你一个整数数组 nums 和一个正整数 k&#xff0c;请你判断是否可以把这个数组划分成一些由 k 个连续数字组成的集合。 如果可以&#xff0c;请返回 True&#xff1b;否则&#xff0c;返回 False。 示例 1&#xff1a; 输入&#xff1a;nums [1,2,3,3,4,4,5,6], k …

mysql 8.0.11-Windows (x86, 64-bit)下载地址与安装教程

1.下载安装包 Windows (x86, 64-bit), ZIP Archive官网下载安装包 点击链接&#xff0c;进入如下页面---点击Download下载---解压到目录&#xff08;例如E:\program\mysql-8.0.11-winx64&#xff09;2.添加配置文件my.ini 在目录E:\program\mysql-8.0.11-winx64下&#xff1a; …

LeetCode 1291. 顺次数(模拟)

1. 题目 我们定义「顺次数」为&#xff1a;每一位上的数字都比前一位上的数字大 1 的整数。 请你返回由 [low, high] 范围内所有顺次数组成的 有序 列表&#xff08;从小到大排序&#xff09;。 示例 1&#xff1a; 输出&#xff1a;low 100, high 300 输出&#xff1a;[1…

织梦(DEDECMS)首页调用相关投票的方法(自动更新)

我使用的是 DEDECMS V5.3 方法一 此方法我没试过&#xff0c;但应该能行得通。 dede投票模块在首页的调用 本文介绍dedecms投票模块在首页的调用方法&#xff0c;大家可以参考写出更符合自己需要的效果。 先来看dedecms默认模板里的投票模块在首页调用的代码&#xff1a; <!…

Excel - 添加趋势线,显示趋势线公式 - 进行行业投融资曲线拟合

1.准备数据 本次是以人工智能行业为例&#xff0c;数据范围是2012年4月到2017年11月的&#xff0c;这是去年的时候采集的&#xff0c;这次就直接拿来用了&#xff0c;不影响曲线拟合的操作过程。但是想使用最新的数据的话&#xff0c;你也可以像我一样用火车头采集器采集最新的…

LeetCode 1169. 查询无效交易

1. 题目 如果出现下述两种情况&#xff0c;交易 可能无效&#xff1a; 交易金额超过 1000或者&#xff0c;它和另一个城市中同名的另一笔交易相隔不超过 60 分钟&#xff08;包含 60 分钟整&#xff09; 每个交易字符串 transactions[i] 由一些用逗号分隔的值组成&#xff0…

windows电脑快捷键大全 - 高手总是很酷的

1. WindowsL键&#xff0c;直接锁屏&#xff0c;这样就不用担心电脑的资料外泄了 2. 一般人会先找到“我的电脑”&#xff0c;然后点击打开&#xff0c;而高手总是很酷的&#xff0c; WindowsE键&#xff0c;直接打开电脑的资源管理器 3. 直接按下 WindowsD键&#xff0c…

Linux常用工具小结:(2) Mysql的rpm安装和编译安装

Mysql的rpm安装 1&#xff0c; 下载。 这里下载http://dev.mysql.com/downloads/mirror.php?id402502。 2&#xff0c; 安装。 下载到本地解压&#xff1a; tar -xvf MySQL-5.5.12-1.rhel5.x86_64.tar 安装以下rpm rpm -ivh MySQL-devel-5.5.12-1.rhel5.x86_64.rpm rpm -ivh M…

Power BI 的 最佳搭档 Excel(基础数据分析)

Powerbi和Excel l Power BI 和 Excel 本节将向你介绍将 Excel 工作薄导入 Power BI 是多么简单&#xff0c;并演示 Power BI 和 Excel 如何展现最佳搭档气质。 以下主题将指导你使用简单的表格将 Excel 工作薄上传到 Power BI。 然后你将了解如何上传使用 Excel 更高级的 B…

LeetCode 718. 最长重复子数组(DP)

1. 题目 给两个整数数组 A 和 B &#xff0c;返回两个数组中公共的、长度最长的子数组的长度。 示例 1: 输入: A: [1,2,3,2,1] B: [3,2,1,4,7] 输出: 3 解释: 长度最长的公共子数组是 [3, 2, 1]。 说明: 1 < len(A), len(B) < 1000 0 < A[i], B[i] < 100来源&am…

在C#中运用 SQLite

在C#中运用 SQLite 作者&#xff1a;IcyCoffee 来源&#xff1a;blog.csdn.net/icycoffee 时间&#xff1a;2010-3-8 【 字体&#xff1a;大 中 小 】 〖 双击滚屏 〗 SQLite 是一个嵌入式的联系数据库系统&#xff0c;运用十分广泛。在一些数据量不大的运用 程序中&…

降维方法 -简直太全- 附Python代码(Random Forest、Factor Analysis、corr、PCA、ICA、IOSMA

为什么要降维&#xff1f; 建模初期&#xff0c;我们往往只有几个指标&#xff0c;这个时候不太涉及到降维&#xff0c;但是一个月后你就发现&#xff0c;模型的指标越来越多&#xff0c;从原有的五六个指标一步一步变成 100 个指标。100 个很多吗&#xff1f;不多&#xff01…