贪心算法总结

发布时间:2023年12月19日

什么是贪心算法

贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十张,如果想达到最大的金额,你要怎么拿? 指定每次拿最大的,最终结果就是拿走最大数额的钱。
每次拿最大的就是局部最优,最后拿走最大数额的钱就是推出全局最优。
引用自代码随想录

题目汇总

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;
    }
}
文章来源:https://blog.csdn.net/weixin_46367158/article/details/135013342
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。