欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 明星 > Leetcode刷题记录24——最大子数组和

Leetcode刷题记录24——最大子数组和

2025/6/18 0:55:44 来源:https://blog.csdn.net/weixin_51418895/article/details/147653590  浏览:    关键词:Leetcode刷题记录24——最大子数组和

题源:https://leetcode.cn/problems/maximum-subarray/description/?envType=study-plan-v2&envId=top-100-liked

题目描述:
在这里插入图片描述

思路一:
使用经典的动态规划算法——Kadane 算法

  • 初始化变量:
    • max_sum:用于记录当前找到的最大子数组和。
    • current_sum:用于记录当前子数组的和。
  • 从第二个元素开始遍历数组:
    • 对于每个元素,更新 current_sum 为 current_sum + nums[i] 和 nums[i] 中的较大值。
    • 更新 max_sum 为 current_sum 和 max_sum 中的较大值。
  • 返回 max_sum。
  • 具体来说,对于数组中的每个元素,Kadane算法都会做出以下决策:
    • 如果把当前元素加入现有的子数组中(即当前元素加上current_sum),是否会形成一个更大的子数组和?如果是,则更新current_sum为current_sum + num。
    • 如果不是,那么就从当前元素重新开始一个新的子数组,因为单凭当前元素就能构成目前为止最大的子数组和

代码实现如下:

class Solution(object):def maxSubArray(self, nums):""":type nums: List[int]:rtype: int"""max_sum = nums[0]current_sum = nums[0]for i in range(1, len(nums)):current_sum = max(nums[i], nums[i]+current_sum)max_sum = max(max_sum, current_sum)return max_sum

执行时间如下:
在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词