zoukankan      html  css  js  c++  java
  • 7.Leetcode53 Maximum Subarray 笔记

    1:题目描述

    Find the contiguous subarray within an array (containing at least one number) which has the largest sum.

    For example, given the array [-2,1,-3,4,-1,2,1,-5,4],
    the contiguous subarray [4,-1,2,1] has the largest sum = 6.

    找出一组数字中最大的连续数字的和

    2:题目分析

    这个题,一看就感觉特别容易,用了双指针然后就贴了代码。然额……

    之后在网上搜了一下,原来还有神奇的“线性时间算法”,遍历一次直接出结果 w(゚Д゚)w

    ①设i<=k<=j,max=Σnums[i,j],如果Σnums[i,k]<0,则Σnums[k,j]>Σnums[i,j],假设不成立,所以说和最大的连续数字中不会有连续数字前缀为负的情况。

    ②在这组数字中取断点,把前缀为负的情况分离开,之后比较大小

    3:解题思路

     1  def maxSubArray(self, nums):
     2         """
     3         :type nums: List[int]
     4         :rtype: int
     5         """
     6         i=0
     7         sum=0
     8         max_sum=-2**31   #把最大值设为最小
     9         while i<len(nums):  
    10             sum+=nums[i]    #只计算前缀的数字和
    11             max_sum=max(sum,max_sum)  #取数值最大的前缀和
    12             if sum<0:           #遇见前缀为零的情况,sum归零
    13                 sum=0
    14             i=i+1
    15         return max_sum

    4:解题感悟

    这个算法真的好神奇,长见识了(#^.^#)

  • 相关阅读:
    Struts2 拦截器
    Struts2 常用标签
    Struts2 OGNL表达式、ValueStack
    Struts2 在Action中操作数据
    Struts2 动态方法调用
    Struts2 常量配置
    Struts2 struts.xml配置
    Struts2 Action的3种创建方式
    Struts2 运行流程
    JUnit
  • 原文地址:https://www.cnblogs.com/19991201xiao/p/8409764.html
Copyright © 2011-2022 走看看