本文部分参考Discuss: LeetCode.

步骤1. 选择数组的中间元素. 最大子序列有两种可能: 包含此元素/不包含.

步骤2.

  步骤2.1 如果最大子序列不包含中间元素, 就对左右子序列进行步骤1.

  步骤2.2 如果最大子序列包含, 则结果很简单, 就是左子列的最大后缀子列(即包含左子列最后一个元素--中间元素)加上右子列的最大前缀子列(即包含右子列第一个元素--中间元素)

步骤3. 返回三者中的最大值(左子列最大值, 右子列最大值, 二者拼接最大值).

 1 class Solution {
 2 public:
 3     int maxSubArray(int A[], int n) {
 4         // IMPORTANT: Please reset any member data you declared, as
 5         // the same Solution instance will be reused for each test case.
 6         if(n==0) return 0;
 7         return maxSubArrayHelperFunction(A,0,n-1);
 8     }
 9
10     int maxSubArrayHelperFunction(int A[], int left, int right) {
11         if(right == left) return A[left];
12         int middle = (left+right)/2;
13         int leftans = maxSubArrayHelperFunction(A, left, middle);
14         int rightans = maxSubArrayHelperFunction(A, middle+1, right);
15         int leftmax = A[middle];
16         int rightmax = A[middle+1];
17         int temp = 0;
18         for(int i=middle;i>=left;i--) {
19             temp += A[i];
20             if(temp > leftmax) leftmax = temp;
21         }
22         temp = 0;
23         for(int i=middle+1;i<=right;i++) {
24             temp += A[i];
25             if(temp > rightmax) rightmax = temp;
26         }
27         return max(max(leftans, rightans),leftmax+rightmax);
28     }
29 };

转载于:https://www.cnblogs.com/lancelod/p/3881093.html

[LeetCode系列]最大连续子列递归求解分析相关推荐

  1. leetcode系列-209.长度最小的子数组

    leetcode系列–第209题.长度最小的子数组 题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target .找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [num ...

  2. LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)

    581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...

  3. LeetCode 1869. 哪种连续子字符串更长

    文章目录 1. 题目 2. 解题 1. 题目 给你一个二进制字符串 s .如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true :否则,返回 f ...

  4. C语言(CED)对于一个2行N列的走道。现在用1*2,2*2的砖去铺满。问有多少种不同的方式(递归求解)

    又涉及到递归问题,这道题的大致内容是这样的: (请用递推方式求解)对于一个2行N列的走道.现在用1*2,2*2的砖去铺满.问有多少种不同的方式.下图是一个2行17列的走道的某种铺法. 提示:观察前n个 ...

  5. sscanf 连续相同编辑符_基于单调栈的滑动窗口法求解“和至少为 K 的最短连续子数组”...

    题目解读 题目要求我们给出一个最短的连续子数组,且这个子数组的和要大于等于 K.乍一看,除了暴力,似乎没什么思路.由于数组规模为 50000,暴力肯定会超时的.但是,我们还是要先暴力一把,看看有什么灵 ...

  6. 【LeetCode】【HOT】581. 最短无序连续子数组

    [LeetCode][HOT]581. 最短无序连续子数组 文章目录 [LeetCode][HOT]581. 最短无序连续子数组 package hot;public class Solution58 ...

  7. 【数据结构笔记35】C实现:有序子列的归并算法:递归与非递归的实现

    本次笔记内容: 9.4.1 有序子列的归并 9.4.2 归并算法 9.4.3 非递归算法 文章目录 归并排序的核心:两个有序子列的归并 归并算法实现策略一:递归算法 注意要有统一函数接口 为什么要有参 ...

  8. 关于递归求解--子问题划分的分析思路总结

    严谨分析输入规模缩小的对象:有的输入不能减小. 要论证当前划分的子问题一定是能够求解出母问题. 递归往往没有子问题合并的过程,而动态规划有. 递归函数的特点是:满足任意规模的输入. 字符串问题的输入规 ...

  9. Leetcode 581.最短无序连续子数组

    最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, ...

最新文章

  1. python怎么读write_Python中怎么读写文件
  2. clinical significance临床显著性
  3. wxpython制作表格界面_wxpython入门第二步(布局)
  4. oneinstack_OneinStack lnmp网站环境部署Namecheap SSL安全证书方法
  5. Java成员方法的声明和调用
  6. 阿里中台建设全解密:包含哪些内容?如何发挥作用?
  7. 手把手教大家如何优化长尾关键词
  8. 程序员应该阅读的一些书籍
  9. python做var模型的滞后阶数怎么确定_请问关于VAR模型的滞后阶数怎么确定?
  10. matlab在电磁波中的应用,MATLAB在电磁波与电磁场课程教学中的应用
  11. python怎么建立索引_python建立索引
  12. 285个地级市的灯光数据(1992-2013年)和雾霾(PM2.5)数据(1998-2016年)
  13. 华东理工大学计算机网络作业,华东理工大学计算机网络实验操作手册.pdf
  14. ddl是什么意思网络语_DDL(数据定义语言)
  15. Mac 更新环境变量
  16. Java IO有这么难吗?
  17. linux c++ 获取当前时间毫秒_Linux 切换工作目录
  18. 用 Word2016 编辑花体和空心字母
  19. 百度2018营收破千亿,AI成发展主要驱动力
  20. c语言format是什么,初始化C盘时format c:/s 中/s是什么意思啊?

热门文章

  1. NDK crash栈信息的错误定位
  2. MYSQL的MERGE存储引擎
  3. 百度PHP高级顾问惠新宸:PHP在百度的发展历程
  4. php几个预定义变量$_SERVER['DOCUMENT_ROOT']
  5. Inplayable技术分享
  6. C++/C++11中std::deque的使用
  7. java监听组合按键_js监听组合按键
  8. Java项目:仿小米商城系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
  9. Java项目:电商书城平台系统设计和实现(java+springboot+mysql+spring+jsp)
  10. 【web】将一个jar包更改成war包