[LeetCode系列]最大连续子列递归求解分析
本文部分参考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系列]最大连续子列递归求解分析相关推荐
- leetcode系列-209.长度最小的子数组
leetcode系列–第209题.长度最小的子数组 题目描述: 给定一个含有 n 个正整数的数组和一个正整数 target .找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [num ...
- LeetCode 581. 最短无序连续子数组(Shortest Unsorted Continuous Subarray)
581. 最短无序连续子数组 581. Shortest Unsorted Continuous Subarray 题目描述 给定一个整型数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序 ...
- LeetCode 1869. 哪种连续子字符串更长
文章目录 1. 题目 2. 解题 1. 题目 给你一个二进制字符串 s .如果字符串中由 1 组成的 最长 连续子字符串 严格长于 由 0 组成的 最长 连续子字符串,返回 true :否则,返回 f ...
- C语言(CED)对于一个2行N列的走道。现在用1*2,2*2的砖去铺满。问有多少种不同的方式(递归求解)
又涉及到递归问题,这道题的大致内容是这样的: (请用递推方式求解)对于一个2行N列的走道.现在用1*2,2*2的砖去铺满.问有多少种不同的方式.下图是一个2行17列的走道的某种铺法. 提示:观察前n个 ...
- sscanf 连续相同编辑符_基于单调栈的滑动窗口法求解“和至少为 K 的最短连续子数组”...
题目解读 题目要求我们给出一个最短的连续子数组,且这个子数组的和要大于等于 K.乍一看,除了暴力,似乎没什么思路.由于数组规模为 50000,暴力肯定会超时的.但是,我们还是要先暴力一把,看看有什么灵 ...
- 【LeetCode】【HOT】581. 最短无序连续子数组
[LeetCode][HOT]581. 最短无序连续子数组 文章目录 [LeetCode][HOT]581. 最短无序连续子数组 package hot;public class Solution58 ...
- 【数据结构笔记35】C实现:有序子列的归并算法:递归与非递归的实现
本次笔记内容: 9.4.1 有序子列的归并 9.4.2 归并算法 9.4.3 非递归算法 文章目录 归并排序的核心:两个有序子列的归并 归并算法实现策略一:递归算法 注意要有统一函数接口 为什么要有参 ...
- 关于递归求解--子问题划分的分析思路总结
严谨分析输入规模缩小的对象:有的输入不能减小. 要论证当前划分的子问题一定是能够求解出母问题. 递归往往没有子问题合并的过程,而动态规划有. 递归函数的特点是:满足任意规模的输入. 字符串问题的输入规 ...
- Leetcode 581.最短无序连续子数组
最短无序连续子数组 给定一个整数数组,你需要寻找一个连续的子数组,如果对这个子数组进行升序排序,那么整个数组都会变为升序排序. 你找到的子数组应是最短的,请输出它的长度. 示例 1: 输入: [2, ...
最新文章
- python怎么读write_Python中怎么读写文件
- clinical significance临床显著性
- wxpython制作表格界面_wxpython入门第二步(布局)
- oneinstack_OneinStack lnmp网站环境部署Namecheap SSL安全证书方法
- Java成员方法的声明和调用
- 阿里中台建设全解密:包含哪些内容?如何发挥作用?
- 手把手教大家如何优化长尾关键词
- 程序员应该阅读的一些书籍
- python做var模型的滞后阶数怎么确定_请问关于VAR模型的滞后阶数怎么确定?
- matlab在电磁波中的应用,MATLAB在电磁波与电磁场课程教学中的应用
- python怎么建立索引_python建立索引
- 285个地级市的灯光数据(1992-2013年)和雾霾(PM2.5)数据(1998-2016年)
- 华东理工大学计算机网络作业,华东理工大学计算机网络实验操作手册.pdf
- ddl是什么意思网络语_DDL(数据定义语言)
- Mac 更新环境变量
- Java IO有这么难吗?
- linux c++ 获取当前时间毫秒_Linux 切换工作目录
- 用 Word2016 编辑花体和空心字母
- 百度2018营收破千亿,AI成发展主要驱动力
- c语言format是什么,初始化C盘时format c:/s 中/s是什么意思啊?
热门文章
- NDK crash栈信息的错误定位
- MYSQL的MERGE存储引擎
- 百度PHP高级顾问惠新宸:PHP在百度的发展历程
- php几个预定义变量$_SERVER['DOCUMENT_ROOT']
- Inplayable技术分享
- C++/C++11中std::deque的使用
- java监听组合按键_js监听组合按键
- Java项目:仿小米商城系统(前后端分离+java+vue+Springboot+ssm+mysql+maven+redis)
- Java项目:电商书城平台系统设计和实现(java+springboot+mysql+spring+jsp)
- 【web】将一个jar包更改成war包