力扣日记1186

news/2024/11/2 0:29:37/

1. 题目

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

1.1 题意

给定数组,求一段连续子数组,选择是否删去其中一个值,使得和最大,求这个最大和

1.2 分析

时间复杂度可以到O( n ∗ l o g n n*logn nlogn)

1 <= arr.length <= 10^5
-10^4 <= arr[i] <= 10^4

总所周知,最大子段和是可以使用动态规划求解的:
dp[i] = max(arr[i], dp[i-1]+arr[i]); // dp[i] 表示以第i个数结尾的最大子段和

这题情况类似,但是每个位置有两种情况,删除了数的情况和未删除数当的情况,这两种情况都需要记录。
dp[i][0] = max(arr[i], dp[i-1][0] + arr[i]) // 和上头一样,记录未删除数的情况
dp[i][1] = max(dp[i-1][0], dp[i-1][1] + arr[i]) ; // 删除数的情况,可能由已经删除了数的上一个状态转移,或者删除当前该数

小细节:最后的答案需要搜一遍所有状态的最大值

1.3 我的解法

class Solution {
public:int maximumSum(vector<int>& arr) {// dp[i][0] 未删除元素的以第i个元素结尾的最大子段和// dp[i][1] 已删元素的以第i个元素结尾的最大子段和// dp[i][0] = max(arr[i], dp[i-1][0] + arr[i])// dp[i][1] = max(dp[i-1][0], dp[i-1][1] + arr[i])int n = arr.size();vector<vector<int> > dp(n, vector<int>(2, 0) );// 初始化dp[0][0] = arr[0];dp[0][1] = arr[0];for(int i=1; i<n; i++){dp[i][0] = max(arr[i], dp[i-1][0] + arr[i]);dp[i][1] = max(dp[i-1][0], dp[i-1][1] + arr[i]) ;}int res = arr[0];for(int i=0; i<n; i++){// 搜索答案res = max(res, dp[i][0]);res = max(res, dp[i][1]);}return res;}
};

1.4 学习题解反思

时间复杂度O(n), 空间复杂度O(n)(可优化)

1.5 bug日记

1.5.1 答案值

答案值需要遍历所有状态查找,而不是最后的状态。
每日一WA,真服啦。

2. 后记

仅分享自己的想法,有意见和指点非常感谢


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

相关文章

如何设计一个文件系统?需要考虑哪些因素?

文件系统的实现 在对文件有了基本认识之后&#xff0c;现在是时候把目光转移到文件系统的实现上了。之前用户关心的一直都是文件是怎样命名的、可以进行哪些操作、目录树是什么&#xff0c;如何找到正确的文件路径等问题。而设计人员关心的是文件和目录是怎样存储的、磁盘空间…

苹果怎么关闭自动更新系统_如何关闭系统自动更新?

苹果手机升级系统后越来越卡&#xff0c;不想升级&#xff0c;但经常推送更新&#xff0c;甚至已经自己下载完成了然后提醒你有软件更新。一旦点错或选择夜间更新&#xff0c;一觉醒来就更新完成了&#xff0c;如果夜间更新时没电就麻烦了。那么怎么永久屏蔽iphone系统更新呢&a…

怎样防止苹果系统更新_苹果手机如何不更新系统

现在很多朋友都在使用苹果手机&#xff0c;有时候不想更新系统该怎么办&#xff0c;下面就为大家介绍一下苹果手机如何不更新系统的方法。 苹果手机如何不更新系统 1、首先在【设置】-【通用】-【itunes store和app store】的选项中&#xff0c;将下面的自动跟更新&#xff0c;…

彻底关闭苹果系统更新_彻底关闭iPhone自动更新系统 亲测有效

系统升级&#xff0c;带来了越来越好的用户体验&#xff0c;具有更好的兼容&#xff0c;优化系统&#xff0c;优化电池管理、提升稳定性、安全性。随之而来的电池耗电速度也更快了。 iPhone升级&#xff0c;私自降频&#xff0c;升级到不能升级后&#xff0c;也就该换新手机了&…

苹果项目关闭服务器,iphone系统服务哪些可以关闭

1、减少使用定位的服务和APP 第一步&#xff0c;在“设置”应用中&#xff0c;点击“隐私”选项中的“定位服务”。 第二步&#xff0c;在“定位服务”页面&#xff0c;可以选择关闭一些App应用的定位服务功能。 第三步&#xff0c;在定位服务页面&#xff0c;点击进入“系统服…

手机老是弹出系统服务器更新,苹果手机为什么老是会弹出系统更新,是不是要更新呢...

原标题&#xff1a;苹果手机为什么老是会弹出系统更新&#xff0c;是不是要更新呢 苹果手机为什么老是会弹出系统更新&#xff0c;是不是要更新呢&#xff0c;更新会有什么好处吗&#xff1f;苹果6&#xff0c;系统提示更新 我看本次提问的是一个iPhone6的机主&#xff0c;如今…

苹果关闭自动更新_iOS12升级弹窗太烦人了,如何屏蔽iOS12自动更新

如果你长时间未更新到苹果最新系统,可能就会经常收到弹窗提示更新,即便这次关了,苹果还会乐此不疲继续推送,是不是很烦人。而且苹果有时还会偷偷地下好固件包,这得占用不少手机空间。如果你有这样的烦恼,机小溪教你一招,只要在手机上安装一个屏蔽文件,就能关闭 iOS 自动…

Mac使用技巧:关闭系统自动更新

如果不关闭macOS Big Sur自动更新&#xff0c;系统会自动更新你的系统到最新版&#xff0c;禁用自动更新系统后如果你不点击确认升级&#xff0c;系统就不会自动更新。 系统偏好设置里面禁止自动更新 1.点击系统最左上角的苹果菜单  –> 系统偏好设置 –> 软件更新&a…