python力扣刷题记录——面试题 16.17. 连续数列(待补充)
程序员文章站
2022-05-12 16:34:33
...
题目:
给定一个整数数组,找出总和最大的连续数列,并返回总和。
方法一:
执行用时: 32 ms
内存消耗: 15.5 MB
野生做法,遍历数组,求和,一边求和一边与这个数对比,如果这个数大于求的和,就从这个数往下计算,抛弃之前算的和。有点像动态规划的背包问题。
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
sum = 0
sum_list = []
for i in range(len(nums)):
sum += nums[i]
if nums[i] > sum:
sum = nums[i]
sum_list.append(sum)
return max(sum_list)
方法二:
暴力法。当然,时间超出了限制
class Solution:
def maxSubArray(self, nums: List[int]) -> int:
result = nums[0]
for i in range(len(nums)):
sum = 0
j = i
for j in range(j, len(nums)):
sum += nums[j]
result = sum if sum > result else result
return result
待补充:
方法三:
动态规划法:
方法四:
分治法: