本文部分参考Discuss: LeetCode.

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

步骤2.

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

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

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

 class Solution {
public:
int maxSubArray(int A[], int n) {
// IMPORTANT: Please reset any member data you declared, as
// the same Solution instance will be reused for each test case.
if(n==) return ;
return maxSubArrayHelperFunction(A,,n-);
} int maxSubArrayHelperFunction(int A[], int left, int right) {
if(right == left) return A[left];
int middle = (left+right)/;
int leftans = maxSubArrayHelperFunction(A, left, middle);
int rightans = maxSubArrayHelperFunction(A, middle+, right);
int leftmax = A[middle];
int rightmax = A[middle+];
int temp = ;
for(int i=middle;i>=left;i--) {
temp += A[i];
if(temp > leftmax) leftmax = temp;
}
temp = ;
for(int i=middle+;i<=right;i++) {
temp += A[i];
if(temp > rightmax) rightmax = temp;
}
return max(max(leftans, rightans),leftmax+rightmax);
}
};

最新文章

  1. .net 实现上传文件分割,断点续传上传文件
  2. 未能加载文件或程序集“MySQLDriverCS
  3. 二模Day2题解
  4. CSS 宝库
  5. HTML Meta标签详解
  6. CF Exam (数学)
  7. iOS中通知的添加和移除
  8. 初识JAVA,对servlet的理解
  9. ADO.NET访问数据库
  10. [LeetCode] Next Greater Element II 下一个较大的元素之二
  11. POJ1192最优连通子串----树形dp
  12. Django Cookie和Seesion
  13. 新建vue项目中遇到的报错信息
  14. dj 分页器组件
  15. Tomcat学习总结(9)——Apache Tomcat 8新特性
  16. JLINK与JTAG的区别(转)
  17. 哈希连接(hash join) 原理
  18. 2017 清北济南考前刷题Day 2 morning
  19. php短域名转为实际域名的函数参考
  20. rman备份的其它特性

热门文章

  1. h5 沉浸式状态栏
  2. syslinux启动盘制作
  3. ckeditor5富文本编辑器在vue中的使用
  4. NPOI:初次操作(新建Excel)
  5. (转载) jQuery页面加载初始化的3种方法
  6. 转载:【Oracle 集群】RAC知识图文详细教程(一)--集群概念介绍
  7. weblogic应用加载不上
  8. React之setState()
  9. Kotlin Reference (五) Packages
  10. Android6.0之后的权限机制对App开发的影响