贪心算法
- 什么是贪心算法
- 题目汇总
- 1800. 最大升序子数组和
什么是贪心算法
贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿? 指定每次拿最大的,最终结果就是拿走最大数额的钱。
每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。
引用自代码随想录
题目汇总
1800. 最大升序子数组和
每一阶段的局部最优就是到当前位置的最大升序子数组之和。
全局最优就是到数组尾时的最大升序子数组之和。
class Solution {public int maxAscendingSum(int[] nums) {int size = nums.length;int total = 0;int res = nums[0];for(int i = 1; i < size; i++){total = nums[i-1];// 贪心的获取能得到的最大值while(i < size && nums[i] > nums[i-1]){total += nums[i];res = Math.max(total, res);i++;} }return res;}
}