Swift-连续子数组的最大和

题目:输入一个整型数组,数组里有正数也有负数。数组中一个或连续的多个整数组成一个子数组。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为{1,-2,3,10,-4,7,2,-5},和最大的子数组为{3,10,-4,7,2},因此输出为该子数组的和18.
核心代码:
<pre><code>`

func findGreatestSumOfSubArray(arr:[Int]) -> Int {
    var maxSum:Int = 0
    var currentSum:Int = 0
    
    for i in 0..<arr.count {
        currentSum += arr[i]
        
        if currentSum > maxSum {
            maxSum = currentSum
        }
        
        if currentSum < 0 { //如果相加为负数,将CurSum置空
            currentSum = 0
        }
    }
    
    return maxSum
}`</code></pre>

测试代码:
<pre><code>`

var maxSum:MaxSum = MaxSum()
var arr:[Int] = [1,-2,3,10,-4,7,2,-5]
var sum = maxSum.findGreatestSumOfSubArray(arr: arr)
print("FlyElephant-连续子数组最大的和--(sum)")`</code></pre>

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1.把二元查找树转变成排序的双向链表 题目: 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。 要求不...
    曲终人散Li阅读 3,378评论 0 19
  • 说明: 本文中出现的所有算法题皆来自牛客网-剑指Offer在线编程题,在此只是作为转载和记录,用于本人学习使用,不...
    秋意思寒阅读 1,171评论 1 1
  • 剑指 offer 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成...
    faremax阅读 2,247评论 0 7
  • 题目描述:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。...
    pw007992阅读 333评论 0 0
  • 处在我们现在这样的一个信息爆炸时代,仅仅是我们自己国家在2015年新出版的图书就达到了47.6万种,即使我们采用速...
    骑象人伟诚阅读 3,251评论 2 6