今天刷题的时候碰到的题。
输入一个整形数组,元素有正有负,且不知数组长度,输入的N个数为数组的元素,求这个数组的连续子数组的最大和,且要求时间复杂度为O(n)。
首先明确某个数组本身也是它的子数组,其次运用动态规划的思想就能很容易解决,把大问题看做为应该将下一个元素加入现有子数组还是应该让其作为新子数组的开头这个小问题的叠加,并在分治解决小问题的过程中,同时保存出现的子数组的最大和的值,就能解决这个问题。以下为c++代码:
#include <iostream>
//#include <limits.h>
#include <vector>
#include <algorithm>
using namespace std;