贪心算法 -- 最大子序和

贪心算法:

贪心算法时间复杂度为O(n)

什么是贪心:

每一步都选择最佳方案,到最后就是全局最优的方案。

本题思路:

遍历数组并在每个步骤中更新:

1 当前元素
2 当前元素位置的最大和
3 迄今为止的最大和

常用情况:

使用单个数组作为输入来查找最大(或最小)元素(或总和)的问题,

class Solution {
public:
int maxSubArray(vector& nums) {
int max = nums[0];
int tmp = nums[0];
for (int i =1; i< nums.size(); ++i)//更新当前元素
{
if(tmp > 0)
tmp += nums[i]; //更新当前最大和
else
tmp = nums[i];

    max = tmp > max ? tmp : max;//更新迄今为止最大和 
    }
    return max;
}

};

发布了94 篇原创文章 · 获赞 13 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_44030580/article/details/105031226