题目:
给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。
例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4],
连续子序列 [4,-1,2,1] 的和最大,为 6。
python代码1:
class Solution:
def maxSubArray(self, nums):
max = nums[0]
for i in range(len(nums)):
sum = 0
for j in range(i,len(nums)):
sum += nums[j]
if sum > max:
max = sum
return maxPython代码2:
class Solution:
def maxSubArray(self, nums):
thissum = 0
maxsum = -2 ** 31
for i in range(len(nums)):
if thissum < 0:
thissum = 0
thissum += nums[i]
maxsum = max(maxsum,thissum)
return maxsumpython代码3:
class Solution:
def maxSubArray(self, nums):
l = g = -2 ** 31
for n in nums:
l = max(n,l+n)
g = max(l,g)
return g心得:自己先写了一个O(n方)的算法,如代码一,发现超时。虽然动态规划可以解出O(nlogn)的结果来,但是看到网上说有O(n)的算法,如代码二与代码三,代码二相对容易懂一些,代码三需要仔细分析。
本文探讨了寻找序列中最大连续子序列和的问题,并给出了三种不同的Python实现方案,包括一种O(n²)的方法及两种O(n)复杂度的高效算法。
2664

被折叠的 条评论
为什么被折叠?



