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
}


目录
相关文章
|
8天前
|
存储 Go
golang力扣leetcode 64.最小路径和
golang力扣leetcode 64.最小路径和
13 0
|
8天前
leetcode代码记录(最大子数组和
leetcode代码记录(最大子数组和
14 2
|
8天前
|
Go
golang力扣leetcode 120.三角形最小路径和
golang力扣leetcode 120.三角形最小路径和
12 0
|
C++ Python
LeetCode每日一题题解:15. 三数之和-题解-python && C++源代码
LeetCode每日一题题解:15. 三数之和-题解-python && C++源代码
|
算法 C++ Python
双指针滑窗经典问题算法模板-附LeetCode每日一题题解:713. 乘积小于 K 的子数组-题解-python && C++源代码
双指针滑窗经典问题算法模板-附LeetCode每日一题题解:713. 乘积小于 K 的子数组-题解-python && C++源代码
|
C++ Python
LeetCode每日一题题解:26. 删除有序数组中的重复项-题解-python && C++源代码
LeetCode每日一题题解:26. 删除有序数组中的重复项-题解-python && C++源代码
|
C++ Python
LeetCode每日一题题解:16. 最接近的三数之和-题解-python && C++源代码
LeetCode每日一题题解:16. 最接近的三数之和-题解-python && C++源代码
|
C++ Python
LeetCode每日一题题解:1706. 球会落何处-题解-python && C++源代码
LeetCode每日一题题解:1706. 球会落何处-题解-python && C++源代码
LeetCode每日一题题解:1706. 球会落何处-题解-python && C++源代码
|
C++ Python
LeetCode每日一题题解:912. 排序数组-题解-python && C++源代码-快速排序代码模板
LeetCode每日一题题解:912. 排序数组-题解-python && C++源代码-快速排序代码模板
|
C++ Python
LeetCode每日一题题解:917. 仅仅反转字母-双指针-python和C++
LeetCode每日一题题解:917. 仅仅反转字母-双指针-python和C++