#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;
}
leetcode 053 最大子序和
最新推荐文章于 2024-04-30 23:15:39 发布