这是一道很有意思的算法题。说它有意思包含了几个方面的内容:首先,它的直观上的求解显而易见、非常容易,但是它的优化求解直到上世纪八十年代才被发现;其次,很多算法书籍(例如《算法导论》、《编程珠玑》,以及Mark Allen Weiss的算法书等)都会讨论它,可见它已经是算法设计的典型教学案例了;最后,它也是各种IT公司笔试面试时常常考察的一道经典算法题目(LeetCode网站上它的题目编号是53)。
来看一下LeetCode网站上关于这道题目的描述:
一、解决方法(一):Brute Force
暴搜的方法最straightforward,我们不做解释。仅给出实现代码如下:
class Solution {
public:
int maxSubArray(vector<int>& nums) {
//int length = nums.size();
int sum = 0;
int max = -2147483648;
for(vector<int>::iterator it1 = nums.begin(); it1 != nums.end(); it1++){
sum = *it1;
if(m