原题链接: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算法题--删除一次得到子数组最大和★相关推荐

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

    1. 题目 给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和. 换句话说,你可以从原数组中选出一个子数组,并可以决定要不要从中删除一个元素(只 ...

  2. Leetcode 5182.删除一次得到子数组最大和

    Time: 20190908 Type: Meidum 题目描述 给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得到的最大元素总和. 换句话说,你可以从原数组 ...

  3. leetcode算法题--删除排序链表中的重复元素 II

    原题链接:https://leetcode-cn.com/problems/remove-duplicates-from-sorted-list-ii/ 1.map ListNode* deleteD ...

  4. leetcode算法题--删除链表的倒数第N个节点

    原题链接:https://leetcode-cn.com/problems/remove-nth-node-from-end-of-list/ 双指针法 ListNode* removeNthFrom ...

  5. leetcode算法题--删除回文子序列

    原题链接:https://leetcode-cn.com/problems/remove-palindromic-subsequences/ class Solution {public:int re ...

  6. leetcode算法题--删除链表的节点

    原题链接:https://leetcode-cn.com/problems/shan-chu-lian-biao-de-jie-dian-lcof/ ListNode* deleteNode(List ...

  7. leetcode算法题--删除与获得点数★

    原题链接:https://leetcode-cn.com/problems/delete-and-earn/ 相关题目:打家劫舍 以nums数组最大的数来作为字典的最大索引,比如最大数为max,那么字 ...

  8. LeetCode算法题-Valid Palindrome II(Java实现)

    这是悦乐书的第287次更新,第304篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第155题(顺位题号是680).给定非空字符串s,最多可以删除一个字符. 判断它是否是回 ...

  9. LeetCode算法题-Design LinkedList(Java实现)

    这是悦乐书的第300次更新,第319篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第168题(顺位题号是707).设计链表的实现.您可以选择使用单链表或双链表.单链表中的 ...

最新文章

  1. 037_Dropdown下拉菜单
  2. This version of the rendering library is more recent than your version of IntelliJ IDEA.
  3. IOS基础之计算器的编写
  4. Hadoop入门(二十二)Mapreduce的求平均值程序
  5. 大号字代码php,如何用QQ发超大汉字_php
  6. UI设计干货素材|简单素材模板教你分分钟提高UI设计水平!
  7. 如何使用HttpContext对象
  8. 在O(1)的时间删除链表结点
  9. 曾被“劝退”的 C++ 20 正式发布!
  10. 【免费毕设】ASP.NET+SQL通用作业批改系统设计(源代码+论文)
  11. 在eclispe的类中快速打出main方法
  12. html 表格转换为dbf,DBF Excel 文件相互转换-完美教程资讯
  13. Oracle数据库恢复删除数据的方法
  14. 软件设计师中级-学习笔记
  15. 测试开发人员与开发人员_我是真正的开发人员还是优秀的Googler?
  16. java.lang.NullPointerException: Missing required view with报错
  17. 【C语言 基础】函数的形参与实参
  18. 5本经典著作描绘学习路线图带你飞过C++
  19. EBGP使用环回口建邻居用到ebgp-multihop和update source loopback
  20. 4G容量U盘只显示2M多

热门文章

  1. 怎么自学python编程-怎么能学习好python编程?有自学的方法吗?
  2. python语言自学-如何自学python语言
  3. python中语法错误-python冒号语法错误python中如何创建字典
  4. python画正方形-用Python Turtle画一个正方形
  5. python面试常见问题-Python面试中最常见的25个问题
  6. python和php-PHP和Python如何选择?或许可以考虑这三个问题
  7. python对文件的读操作有哪些方法-Python中文件的读取和写入操作
  8. 井下三专两闭锁的内容_矿用高压防爆开关:煤矿井下高低压防爆开关五防电子锁保护装置...
  9. python读取有中文文件时的报错处理
  10. Gradle of Android Example