leetcode算法题--删除一次得到子数组最大和★
原题链接:https://leetcode-cn.com/problems/maximum-subarray-sum-with-one-deletion/
1、穷举(超时)
dp[i][j]表示arr[i:j]的子数组和
代码:
int maximumSum(vector<int>& arr) {int size=arr.size();vector<vector<int>> dp(size+1,vector<int>(size+1,0));int ans=INT_MIN;for(int len=0;len<=size;len++){for(int i=1;i<=size-len;i++){for(int j=i+len;j<=size;j++){dp[i][j]=dp[i][j-1]+arr[j-1];//子数组和ans=max(ans,dp[i][j]);}int j=i+len;for(int k=i+1;k<j;k++){ans=max(ans,dp[i][k-1]+dp[k+1][j]);//去掉arr[k]是否变大}}}return ans;
}
2、动态规划
维护两个数组r和d,r是不删除的数组,d是删除一个的数组,则有状态转移:
r[i]=max(r[i-1]+arr[i],arr[i]);//要么是当前元素累加和,要么重新开始
d[i]=max(d[i-1]+arr[i],r[i-1]);//要么是之前某个删除一个的数组加上当前元素,要么是上个不删除数组,也就是删除了当前元素
代码:
int maximumSum(vector<int>& arr) {int size=arr.size();vector<int> r(size,-10001);//不删除的数组vector<int> d(size,-10001);//删除一个的数组int ans=arr[0];//保存最大值r[0]=arr[0];for(int i=1;i<size;i++){r[i]=max(r[i-1]+arr[i],arr[i]);//要么是当前元素累加和,要么重新开始d[i]=max(d[i-1]+arr[i],r[i-1]);//要么是之前某个删除一个的数组加上当前元素,要么是上个不删除数组,也就是删除了当前元素ans=max(ans,max(r[i],d[i]));}return ans;
}
leetcode算法题--删除一次得到子数组最大和★相关推荐
- LeetCode 1186. 删除一次得到子数组最大和(DP)
1. 题目 给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和. 换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只 ...
- Leetcode 5182.删除一次得到子数组最大和
Time: 20190908 Type: Meidum 题目描述 给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和. 换句话说,你可以从原数组 ...
- leetcode算法题--删除排序链表中的重复元素 II
原题链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ 1.map ListNode* deleteD ...
- leetcode算法题--删除链表的倒数第N个节点
原题链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 双指针法 ListNode* removeNthFrom ...
- leetcode算法题--删除回文子序列
原题链接:https://leetcode-cn.com/problems/remove-palindromic-subsequences/ class Solution {public:int re ...
- leetcode算法题--删除链表的节点
原题链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/ ListNode* deleteNode(List ...
- leetcode算法题--删除与获得点数★
原题链接:https://leetcode-cn.com/problems/delete-and-earn/ 相关题目:打家劫舍 以nums数组最大的数来作为字典的最大索引,比如最大数为max,那么字 ...
- LeetCode算法题-Valid Palindrome II(Java实现)
这是悦乐书的第287次更新,第304篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第155题(顺位题号是680).给定非空字符串s,最多可以删除一个字符. 判断它是否是回 ...
- LeetCode算法题-Design LinkedList(Java实现)
这是悦乐书的第300次更新,第319篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第168题(顺位题号是707).设计链表的实现.您可以选择使用单链表或双链表.单链表中的 ...
最新文章
- 037_Dropdown下拉菜单
- This version of the rendering library is more recent than your version of IntelliJ IDEA.
- IOS基础之计算器的编写
- Hadoop入门(二十二)Mapreduce的求平均值程序
- 大号字代码php,如何用QQ发超大汉字_php
- UI设计干货素材|简单素材模板教你分分钟提高UI设计水平!
- 如何使用HttpContext对象
- 在O(1)的时间删除链表结点
- 曾被“劝退”的 C++ 20 正式发布!
- 【免费毕设】ASP.NET+SQL通用作业批改系统设计(源代码+论文)
- 在eclispe的类中快速打出main方法
- html 表格转换为dbf,DBF Excel 文件相互转换-完美教程资讯
- Oracle数据库恢复删除数据的方法
- 软件设计师中级-学习笔记
- 测试开发人员与开发人员_我是真正的开发人员还是优秀的Googler?
- java.lang.NullPointerException: Missing required view with报错
- 【C语言 基础】函数的形参与实参
- 5本经典著作描绘学习路线图带你飞过C++
- EBGP使用环回口建邻居用到ebgp-multihop和update source loopback
- 4G容量U盘只显示2M多
热门文章
- 怎么自学python编程-怎么能学习好python编程?有自学的方法吗?
- python语言自学-如何自学python语言
- python中语法错误-python冒号语法错误python中如何创建字典
- python画正方形-用Python Turtle画一个正方形
- python面试常见问题-Python面试中最常见的25个问题
- python和php-PHP和Python如何选择?或许可以考虑这三个问题
- python对文件的读操作有哪些方法-Python中文件的读取和写入操作
- 井下三专两闭锁的内容_矿用高压防爆开关:煤矿井下高低压防爆开关五防电子锁保护装置...
- python读取有中文文件时的报错处理
- Gradle of Android Example