最大子序和,動態規劃時間複雜度爲O(n),則假設每一步爲step,
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
if len(nums) == 0:
return 0
global_max = nums[0]
step_max = nums[0]
if len(nums) == 1:
return global_max
for i in range(1, len(nums)):
if step_max + nums[i] < nums[i]:
step_max = nums[i]
else:
step_max += nums[i]
if step_max > global_max:
global_max = step_max
return global_max
class Solution:
def minSubArray(self, nums: List[int]) -> int:
if len(nums) == 0:
return 0
global_min = nums[0]
step_min = nums[0]
if len(nums) == 1:
return global_min
for i in range(1, len(nums)):
if step_min + nums[i] < nums[i]:
step_min += nums[i]
else:
step_max = nums[i]
if step_min < global_min:
global_min = step_min
return global_min
https://www.zhihu.com/question/23995189/answer/35324479
https://www.zhihu.com/question/52165201