您的位置:首页 > 其它

leetcode 053 最大子序和

2018-12-04 21:32 134 查看
#include<iostream>
#include<vector>
using namespace std;

//双重循环,时间复杂度O(n²)
//对于外循环的每一个i,通过内循环j的移动 并用sum依次计算以i为开头的 长度分别为1 2 3 4……的子串的和
//每得到一个sum,都与max比较,如果sum>max,把sum给max
//每一次内循环开始之前,sum置0
//解决了问题就是好办法,嘻嘻

class Solution {
public:
static int maxSubArray(vector<int>& nums) {

unsigned int i = 0, j = 0;
int max=nums[0]; int sum;
for (i = 0; i < nums.size(); i++) {
sum = 0;
for (j = i; j < nums.size(); j++)
{
sum += nums[j];
if (sum > max)
max = sum;
}
}
return max;
}
};

int main() {
vector<int> in;
in.push_back(-2);
in.push_back(1);
in.push_back(-3);
in.push_back(4);
in.push_back(-1);
in.push_back(2);
in.push_back(1);
in.push_back(-5);
in.push_back(4);
cout << Solution::maxSubArray(in);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: