贪心算法:
贪心算法时间复杂度为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;
}
};