#53 Maximum Subarray ——Top 100 Liked Questions
Given an integer array nums
, find the contiguous subarray (containing at least one number) which has the largest sum and return its sum.
Example:
Input: [-2,1,-3,4,-1,2,1,-5,4],
Output: 6
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中的最大值
“””
class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
if not nums:
return None
L = len(nums)
dp = [0] * L
dp[0] = nums[0]
for i in range(1, L):
if nums[i] + dp[i - 1] > nums[i]:
dp[i] = nums[i] + dp[i - 1]
else:
dp[i] = nums[i]
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.
“””
还没有评论,来说两句吧...