zoukankan      html  css  js  c++  java
  • LeetCode 53_ 最大子序和

    1. 题目描述

    注: 属于动态规划.

    2. 代码

    1 class Solution:
    2     def maxSubArray(self, nums: List[int]) -> int:
    3         for i in range(1,len(nums)):
    4             nums[i] = max(nums[i-1]  + nums[i], nums[i])
    5         return max(nums)

    思路:  nums[i] 是从1开始的, 开始算的是num[0]+nums[1]与nums[i]的最大值. 找到最大值, 更新nums[i]. 迭代完成后返回nums的最大值.

    另一种解法:

     1 import sys
     2 class Solution:
     3     def maxSubArray(self, nums: 'List[int]') -> 'int':
     4         sums = 0
     5         maxsum = -sys.maxsize
     6         n = len(nums)
     7         for i in range(n):
     8             if sums < 0:#如果sums为负数, 则直接丢弃不用. 因为负数+任意数肯定小于原来的数.
     9                 sums = nums[i]
    10             else:
    11                 sums += nums[i]
    12             maxsum = max(maxsum,sums)#使用当前连续和更新最大值
    13         return maxsum
  • 相关阅读:
    C#结构
    R语言快速入门
    C#_枚举类型
    C#_数组
    C#传递参数
    C#_字符串的操作
    python-函数之命名空间作用域
    python-迭代器和生成器
    python-文件操作
    python
  • 原文地址:https://www.cnblogs.com/vvzhang/p/13854596.html
Copyright © 2011-2022 走看看