LeetCode-53. 最大子序和(Goland实现)

简介: LeetCode-53. 最大子序和(Goland实现)

题号:53. 最大子序和


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


示例:


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


优化前:


网络异常,图片无法展示
|



func maxSubArray(nums []int) int {
  if len(nums) == 0 {
    return 0
  }
  var max = nums[0]
  var sum = 0
  for i := 0; i < len(nums); i++ {
    sum = nums[i]
    //首先判断 当前值是否比max大,避免有可能max为负,但是当前值也为负但是比max大的情况
    if sum > max {
      max = sum
    }
    for j := i + 1; j < len(nums); j++ {
      sum = sum + nums[j]
      if sum > max {
        max = sum
      }
    }
  }
  return max
}


优化后:


网络异常,图片无法展示
|



//优化  只需遍历一次
func maxSubArray1(nums []int) int {
  var max = nums[0]
  for i := 1; i < len(nums); i++ {
    if nums[i]+nums[i-1] > nums[i] {
      nums[i] += nums[i-1]
    }
    if nums[i] > max {
      max = nums[i]
    }
  }
  return max
}


目录
相关文章
|
算法
LeetCode-122. 买卖股票的最佳时机 II(Goland实现)
LeetCode-122. 买卖股票的最佳时机 II(Goland实现)
188 0
LeetCode-剑指 Offer 03. 数组中重复的数字(Goland实现)
LeetCode-剑指 Offer 03. 数组中重复的数字(Goland实现)
218 0
|
算法
LeetCode-136. 只出现一次的数字(Goland实现)
LeetCode-136. 只出现一次的数字(Goland实现)
93 0
|
存储
LeetCode-66. 加一(Goland实现)
LeetCode-66. 加一(Goland实现)
95 0
LeetCode-409. 最长回文串(Goland实现)
LeetCode-409. 最长回文串(Goland实现)
112 0
LeetCode-58. 最后一个单词的长度(Goland实现)
LeetCode-58. 最后一个单词的长度(Goland实现)
100 0
LeetCode-38. 外观数列(Goland实现)
LeetCode-38. 外观数列(Goland实现)
103 0
LeetCode-88. 合并两个有序数组(Goland实现)
LeetCode-88. 合并两个有序数组(Goland实现)
106 0
LeetCode-459. 重复的子字符串(Goland实现)
LeetCode-459. 重复的子字符串(Goland实现)
112 0
|
机器学习/深度学习
LeetCode-104. 二叉树的最大深度(Goland实现)
LeetCode-104. 二叉树的最大深度(Goland实现)
102 0