贪心算法小例子

*贪心算法介绍:

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。
贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。

问题

给定一个整数数组nums,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入:[-2,1,-3,4,-1,2,1,-5,4];
输出:6
解释:连续子数组[4,-1,2,1]的和最大,为6。

贪心算法解法

贪心算法小例子_第1张图片
java 源代码:
class Solution{
public int maxSubArray(int[] nums){
int n=nums.length;
int currSum=nums[0], maxSum=nums[0];
for(int i=1;i currSum=Math.max(nums[i],currSum+nums[i]);
maxSum=Math.max(maxSum,currSum);
}
renturn maxSum;
}
}
时间复杂度:o(N),只遍历了一次数组;空间复杂度:o(1),只使用了常数空间。

贪心算法感悟

该算法使用循环遍历的方法分步求每当前最大的结果,没有先考虑整体,而遍历完后,最后的结果就是所求的值。

你可能感兴趣的:(学习心得)