珍宝鸭的力扣练习(8):贪心算法练习合集

1.贪心算法适用的问题**
贪心策略适用的前提是:局部最优策略能导致产生全局最优解。
实际上,贪心算法适用的情况很少。一般,对一个问题分析是否适用于贪心算法,可以先选择该问题下的几个实际数据进行分析,就可做出判断。

2.贪心算法的实现框架
从问题的某一初始解出发;
while (能朝给定总目标前进一步)
{
利用可行的决策,求出可行解的一个解元素;
}
由所有解元素组合成问题的一个可行解;
题目1:
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4],
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

解法:遍历数组并在每个步骤中更新:
当前元素
当前元素位置的最大和
迄今为止的最大和

class Solution:
    def maxSubArray(self, nums):
        n = len(nums)
        curr_sum = max_sum = nums[0]

        for i in range(1, n):
            curr_sum = max(nums[i], curr_sum + nums[i])#局部最优解
            max_sum = max(max_sum, curr_sum)
            #全局最优解
            
        return max_sum


你可能感兴趣的:(珍宝鸭的力扣练习(8):贪心算法练习合集)