C++ 求最大子序列和(贪心算法)

#include "iostream"
#include "vector"

using namespace std;
class Solution {
// 得到一个最大的负数
int isAllLow(vector<int> &nums){
int max=nums[0];
for (int i = 1; i < nums.size(); ++i) {
if(max<nums[i]){
max=nums[i];
}
}
return max;
}
public:
// 求最大子序列
int maxSubArray(vector<int>& nums) {
int sum=0;
int maxsum=this->isAllLow(nums);
// 如果是一个最大的负数,就直接返回这个最大的负数
if(maxsum<0){
return maxsum;
}
// 遍历整个数组
for(int i=0;i<nums.size();i++){
// 加上这个数
sum+=nums[i];
// 如果这个数大于maxsum,就更新这个maxsum
if(sum>maxsum){
maxsum=sum;
// 如果sum是一个小于0的数,就舍去这个和
}else if(sum<0){
sum=0;
}
}

return maxsum;
}
};
int main(){

return 0;
}

猜你喜欢

转载自blog.csdn.net/weixin_53064820/article/details/130819990
今日推荐