首页 > 编程语言 >【算法题】53. 最大子数组和-力扣(LeetCode)

【算法题】53. 最大子数组和-力扣(LeetCode)

时间:2024-09-24 21:48:46浏览次数:12  
标签:nums 示例 53 力扣 数组 LeetCode dp

【算法题】53. 最大子数组和-力扣(LeetCode)

1.题目

下方是力扣官方题目的地址

53. 最大子数组和

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。

子数组

是数组中的一个连续部分。

示例 1:

输入:nums = [-2,1,-3,4,-1,2,1,-5,4]
输出:6
解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。

示例 2:

输入:nums = [1]
输出:1

示例 3:

输入:nums = [5,4,-1,7,8]
输出:23

提示:

  • 1 <= nums.length <= 105
  • -104 <= nums[i] <= 104

2.题解

思路

本题很显然可以用动态规划的思路

我们可以将该问题转换为子问题,找到这些子问题的状态转移方程

这个问题就可以轻松地解决了

我们用 dp[i] 代表以第 i个数结尾的连续子数组的最大和

dp[i]的得出有两种情况:

1.单独自成一个序列,从num[i]开始

2.加入dp[i-1]的那一段序列

由这两个情况可以很容易得出状态转移方程:

dp[i]=max(dp[i-1]+nums[i],nums[i])

得出了状态转移方程,这个问题也就迎刃而解了

Python代码

class Solution(object):
    def maxSubArray(self, nums):
        """
        :type nums: List[int]
        :rtype: int
        """
        dp=[0]*len(nums)        # 初始化dp数组
        dp[0]=nums[0]
        for i in range(1,len(nums)):
            dp[i]=max(dp[i-1]+nums[i],nums[i])      # 利用状态转移方程
        return max(dp)

3.结语

本人资历尚浅,发博客主要是记录与学习,欢迎大佬们批评指教!大家也可以在评论区多多交流,相互学习,共同成长。

标签:nums,示例,53,力扣,数组,LeetCode,dp
From: https://blog.csdn.net/Janium/article/details/142407839

相关文章

  • Day5 JavaWeb知识了解以及每日一题:力扣125.验证回文串
    Day5JavaWeb知识了解以及每日一题:力扣125.验证回文串2024年9月24日20:06:45JavaWeb基础知识TomcatApacheTomcat是一个开源的Servlet容器和Web服务器,它是JavaEE(EnterpriseEdition)的一部分,专门用于运行JavaServlet和JavaServerPages(JSP)。Tomcat的主要功能是接收HTTP......
  • 力扣274.H指数
    题目要求:给你一个整数数组 citations ,其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。根据维基百科上 h指数的定义:h 代表“高引用次数”,一名科研人员的 h 指数 是指他(她)至少发表了 h 篇论文,并且 至少 有 h 篇......
  • 力扣题解2207
    大家好,欢迎来到无限大的频道。今日继续给大家带来力扣题解。题目描述(中等)​:字符串中最多数目的子序列给你一个下标从 0 开始的字符串 text 和另一个下标从 0 开始且长度为 2 的字符串 pattern ,两者都只包含小写英文字母。你可以在 text 中任意位置插入 一个......
  • 【LeetCode Hot 100】17. 电话号码的字母组合
    题目描述本题需要用回溯算法遍历穷举所有可能的解。回溯算法维护一个字符串序列,记录已经有的字母排列,用一个索引值记录该字符串序列下一个将要处理的位置。每次递归将索引值加一,回溯之后将字符串序列中上次加入的字符退出序列中,枚举下一个可能的值。总的来说是一个较为基础的回溯......
  • Leetcode 43. 字符串相乘
    1.题目基本信息1.1.题目描述给定两个以字符串形式表示的非负整数num1和num2,返回num1和num2的乘积,它们的乘积也表示为字符串形式。注意:不能使用任何内置的BigInteger库或直接将输入转换为整数。1.2.题目地址https://leetcode.cn/problems/multiply-strings/descripti......
  • LeetCode 1014. 最佳观光组合
    题目简介:给你一个正整数数组 values,其中 values[i] 表示第 i 个观光景点的评分,并且两个景点 i 和 j 之间的 距离 为 j-i。一对景点(i<j)组成的观光组合的得分为 values[i]+values[j]+i-j ,也就是景点的评分之和 减去 它们两者之间的距离。返回一对观......
  • Day 23 贪心算法part01| LeetCode 455.分发饼干,376.摆动序列,53.最大子序和
    455.分发饼干455.分发饼干classSolution{publicintfindContentChildren(int[]g,int[]s){Arrays.sort(g);Arrays.sort(s);intindex=s.length-1;intcount=0;for(inti=g.le......
  • 387. 字符串中的第一个唯一字符-LeetCode(C++)
    387.字符串中的第一个唯一字符题目给定一个字符串s,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回-1。提示:1<=s.length<=105s只包含小写字母示例示例1:输入:s="leetcode"输出:0示例2:输入:s="loveleetcode"输出:2示例3:......
  • leetcode刷题day27|贪心算法Part01(455.分发饼干、376. 摆动序列、53. 最大子序和)
    前言:贪心的本质选择每一阶段的局部最优,从而达到全局最优。455.分发饼干思路:局部最优-大饼干喂给胃口大的,充分利用饼干尺寸喂饱一个;全局最优:喂饱尽可能多的小孩。可以尝试使用贪心策略,先将饼干数组和小孩数组排序,然后从后向前遍历小孩数组,用大饼干优先满足胃口大的,并统计......
  • ELEC5307 Deep Learning
    ELEC5307DeepLearningProject#1:ParametersinNeuralNetworksDue:23Oct202011:59PM1ObjectivesThislaboratoryaimstointroducethebasictechniquesindeepneuralnetworks.Inthislaboratoryyouwill:LearntousePyTorchtoloadimagesand......