题解 | #连续的最大编号和#
连续的最大编号和
https://www.nowcoder.com/practice/87811c7ff248419dab6201aa3818e2c2
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int maxSubArray(vector<int>& nums) {
// write code here
n = nums.size();
for (auto p: nums) a.push_back(p);
f.resize(a.size());
// 环形数组的子数组包括以下两种情况:o表示选择的子数组
return FindMaxArray();
}
int FindMaxArray() {
f.clear();
f[0] = a[0];
int ans = f[0];
for (int i = 1; i < a.size(); ++i) {
f[i] = max(f[i - 1] + a[i], a[i]);
ans = max(ans, f[i]);
}
return ans;
}
int n;
vector<int> a;
vector<int> f; // f[i]: 以 a[i] 为结尾的最小子段和
};
