0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Maximum Subarray 最大子序和

汽车电子技术 来源:神经网络与强化学习 作者:Jemma Liu 2023-03-01 11:26 次阅读

今天的题目是 53. Maximum Subarray 最大子序和

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

Example:

Input: [-2,1,-3,4,-1,2,1,-5,4],

Output: 6

Explanation: [4,-1,2,1] has the largest sum = 6.

Follow up:

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

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

示例:

输入: [-2,1,-3,4,-1,2,1,-5,4],

输出: 6

解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。

进阶:

如果你已经实现复杂度为 O(n) 的解法,尝试使用更为精妙的分治法求解。


Solutions:

class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        max_sum = nums[0]
        lst = 0
       # if(len(nums)==1): return nums[0]
       '''
       设置一个累加值,一个next_item值,一个max_sum值进行比较。
       累加值是经过的数值累加的结果,next_item指示循环中的下一个新值,
       max_sum用来保留全局最大,并做返回值。
       '''
        for next_item in nums:
            lst = max(next_item,lst+next_item)
            max_sum = max(max_sum,lst)

        return max_sum
class Solution:
    def maxSubArray(self, nums: List[int]) -> int:
        '''
        用DP的思想来解,并对数组进行原地修改,修改后的值等于该位置之前的最大累加和。
        nums[0]不变,从nums[1]开始更新,对于i位置新值等于nums[i]和nums[i]+累加值
        nums[i-1]中最大项。如果nums[i]小于0则累加后数值变小,经过max之后会被筛选掉。
        最后返回nums数组中的最大值即可。
        '''
        for i in range(1, len(nums)):
            nums[i] = max(nums[i], nums[i] + nums[i - 1])
        return max(nums)
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 元素
    +关注

    关注

    0

    文章

    47

    浏览量

    8372
  • 连续
    +关注

    关注

    0

    文章

    16

    浏览量

    8804
  • 数组
    +关注

    关注

    1

    文章

    409

    浏览量

    25595
收藏 人收藏

    评论

    相关推荐

    【我是电子发烧友】正电流和负电流和零电流

    保护误动作,常采用两个第一段组成的四段式保护。灵敏一段是按躲过被保护线路末端单相或两相接地短路时出现的最大电流整定的。其动作电流小,保护范围大,但在单相故障切除后的非全相运行状态下被闭锁。这时
    发表于 06-21 16:18

    请问数组定义全部是0,节点最大子节点数目是多少呢?

    ] = [0]; uint8 CskipChldrn[1] = [0];数组定义全部是0,节点最大子节点数目是多少呢?
    发表于 05-22 04:56

    请问C6670上行使用BCP中的SSL子模块解调,可以支持的最大子载波是多少?

    数组的index,是不是说明Rprime不能大于45,也就是说支持的最大子载波不能超过45?对于定义的UInt8 prbList[45]=[1, 2, 3, 4, 5, 6, 8, 9
    发表于 01-03 11:31

    什么是设计可以运行的最大时钟频率

    大家好,我有一段代码用于图像处理,我想确定最大块延迟,以便我可以推断设计可以使用的最大时钟频率。静态时序报告和时钟时序报告如下静态时间报告
    发表于 02-26 10:15

    电流是什么?如何检测零电流?

    电流与零保护定义是什么呢?如何检测零电流?零电流的危害有哪些?
    发表于 05-07 06:37

    继电器有哪些优势

    继电器将有助于:1. 提高电机寿命2. 减少昂贵的电机维修或更换3. 最大限度地减少因电机问题而导致的停机时间4. 降低因电机绕组短路而导致触电或火灾的风险相继电器检测接入的的火线L1,L2
    发表于 09-14 08:04

    为什么架空输电线路的零电抗大于其正电抗?

    最大冲击电流出现的条件是什么?什么是派克变换?派克变换的意义是什么?什么是对称分量法?为什么架空输电线路的零电抗大于其正电抗(负电抗)?提高暂态稳定性的措施有哪些?
    发表于 10-25 06:00

    LabVIEW 小端和大端区别

    LabVIEW 小端和大端区别看到在一些范例程序中出现了小端和大端,这里的的字节序表示什么意思?解答: endian表示的是多字节二进制数是怎么存储的。例如说,双字节可以存储为
    发表于 04-22 19:56

    数码相机最大像素

    数码相机最大像素 最大像素英文名称为Maximum Pixels,所谓的最大像素是经过插值
    发表于 12-18 14:26 465次阅读

    What is the maximum temperatur

    Problem What is the maximum temperature your PCB can handle?  Solution 130 Degrees C.266 Degrees F. Details:
    发表于 12-29 09:25 461次阅读

    什么是maximum DSL speeds

    什么是maximum DSL speeds  英文缩写: maximum DSL speeds 中文译名: 最高DSL速率 分 
    发表于 02-23 09:51 791次阅读

    分析新能源三大子行业走势

    分析新能源三大子行业走势   随着“低碳生活”口号的深入人心,新能源也被更多的人所熟悉和关注。   政策支持 新能源有了“文件保障”   新能源
    发表于 04-12 10:42 852次阅读

    数据结构与算法分析:最大子序列和问题之算法优化

    在这个问题中,最大子序列和可能在三处出现:即左半部序列、右半部序列、穿过中部从而占据左右两半部分的序列。前两种情况可以通过递归求解。而递归的基准情况(base cases)是序列只有一个元素(left == right),若该元素大于0,则返回该元素,否则返回0。
    的头像 发表于 04-26 17:07 3068次阅读

    动态规划:8行代码搞定最大子数组和问题

    这种解法最简单,我们把所有子数组找出来,然后依次计算其和,找出一个最大的出来,比如给定数组[1,2,3],那么我们能找出子数组:[1],[2],[3],[1,2],[2,3],[1,2,3],很显然这里和最大的子数组为[1,2,3],其值为6。
    的头像 发表于 04-01 10:24 920次阅读

    C编程:“最大子数组的和” 的动态规划的解法

    最大子数组之和
    的头像 发表于 08-21 09:33 934次阅读
    C编程:“<b class='flag-5'>最大子</b>数组的和” 的动态规划的解法