#53 Maximum Subarray ——Top 100 Liked Questions

深藏阁楼爱情的钟 2022-01-30 05:13 235阅读 0赞

Given an integer array nums, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.

Example:

  1. Input: [-2,1,-3,4,-1,2,1,-5,4],
  2. Output: 6
  3. Explanation: [4,-1,2,1] has the largest sum = 6.

Follow up:

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle

“””

第一次:居然会想到用动态规划!感觉自己进步了hhhh。思路:定义dp,dp[i]=dp[i-1]+nums[i],如果和较nums[i]增大了,则对应位置保存,如果减小了,对应位置为nums[i]的值不变,最后返回dp中的最大值

“””

  1. class Solution(object):
  2. def maxSubArray(self, nums):
  3. """
  4. :type nums: List[int]
  5. :rtype: int
  6. """
  7. if not nums:
  8. return None
  9. L = len(nums)
  10. dp = [0] * L
  11. dp[0] = nums[0]
  12. for i in range(1, L):
  13. if nums[i] + dp[i - 1] > nums[i]:
  14. dp[i] = nums[i] + dp[i - 1]
  15. else:
  16. dp[i] = nums[i]
  17. return max(dp)

“””

Runtime: 48 ms, faster than 57.44% of Python online submissions for Maximum Subarray.

Memory Usage: 12.7 MB, less than 10.39% of Python online submissions for Maximum Subarray.

“””

发表评论

表情:
评论列表 (有 0 条评论,235人围观)

还没有评论,来说两句吧...

相关阅读