【贪心算法】贪心算法解决具有最大和的子数组问题

问题描述:A是一个有N个整数组成的数组,求其最大的由连续元素构成的具有最大和的子数组。

 

用贪心法解决此问题的关键在于,注意到最优解的两侧元素一定是非负数。所以可以在O(N)时间解决之,空间复杂度O(1)。

不过这个问题并不是符合拟阵模型的。

 

以下是一个python实现:

 

def get_max_sub_array_sum(L):
  maxN=L[0]
  sN=L[0]
  for x in L[1:]:
    if sN<0:
      sN=0
    sN+=x
    if sN>maxN:
      maxN=sN
  return maxN

if __name__ == '__main__':
  L=[1,2,3,-2]
  print get_max_sub_array_sum(L)

  L=[1,2,3,-2,1]
  print get_max_sub_array_sum(L)

  L=[1,2,3,-2,3]
  print get_max_sub_array_sum(L)
 

 

你可能感兴趣的:(算法,python)