美文网首页Swift刷算法
Swift刷算法:最大子数组和

Swift刷算法:最大子数组和

作者: JonorZhang | 来源:发表于2022-06-23 09:25 被阅读0次

给你一个整数数组 nums ,请你找出一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
子数组 是数组中的一个连续部分。
LeetCode: https://leetcode.cn/problems/maximum-subarray/

image.png
class Solution {
        
    func maxSubArray(_ nums: [Int]) -> Int {
        if nums.isEmpty { return 0 }
        // 以nums[i-1]为终点的局部前缀和
        var presum = nums[0]
        // 全局最大和
        var maxsum = presum

        for i in 1 ..< nums.count {
            // 对于每一个新来的nums[i],要么加入前面组成连续和,要么自成一派, 看看哪种和更大;
            // 其实可以看出如果前缀和已经是负数,那么自成一派更大
            presum = max(presum, 0) + nums[i]
            // 更新全局最大值
            maxsum = max(maxsum, presum)
        } 

        return maxsum
    }
}
image.png

相关文章

  • Swift刷算法:最大子数组和

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

  • 10《算法入门教程》分治算法之最大子数组问题

    1. 前言 本节内容是分治算法系列之一:最大子数组问题,主要讲解了什么是最大子数组问题,如何利用分治算法解决最大子...

  • 2018-05-24

    算法导论,分治算法,最大子数组问题。python ,代码抄袭,Dacixie的博客--https://blog.c...

  • 最大子数组问题

    最近在看算法导论,看到计算最大子数组问题,于是写了一个iOS版本的。 利用分治策略,逐层寻找 最大子数组存在三种情...

  • 8. 动态规划

    1. 最大连续子数组和 求数组中连续的一个或多个子数组的最大和,并记录开始和结束位置 1.1 最大子矩阵和 算法思...

  • 53、最大子数组和 | 算法(leetcode,附思维导图 +

    零 标题:算法(leetcode,附思维导图 + 全部解法)300题之(53)最大子数组和 一 题目描述 二 解法...

  • 获取数组中所有的子数组-Swift3.0 实现

    在最大子数组问题中,涉及到暴力求解,那么,如何获取所有的子数组,写了个例子:ListSubArray.swift如...

  • 2018-05-25

    算法导论,线性时间,最大子数组和。这个思想,必须先要理解清楚,而后才能 写代码 。参考资料,感谢作者。https:...

  • 动态规划

    求最大子数组,最大子乘积

  • LeetCode刷题-最大子序和

    前言说明 算法学习,日常刷题记录。 题目连接 最大子序和[https://leetcode-cn.com/prob...

网友评论

    本文标题:Swift刷算法:最大子数组和

    本文链接:https://www.haomeiwen.com/subject/obvyvrtx.html