Find the contiguous subarray within an array (containing at least one number) which has the largest sum.
For example, given the array [-2,1,-3,4,-1,2,1,-5,4], the contiguous subarray [4,-1,2,1] has the largest sum = 6
题目的意思是找出连续子序列的最大和。
思路:典型的动态规划问题,以第i个数为结尾的连续子序列最大和sum[i] 是 (sum[i-1]+nums[i], nums[i])中较大的数。不断更新re用来存前i个数中和最大的连续子序列的和。时间复杂度O(n).
class Solution {
public:
int maxSubArray(vector<int>& nums) {
int sum=nums[0], re=nums[0];
for(int i=1; i<nums.size();i++)
{
sum=max(sum+nums[i],nums[i]);
re=max(sum,re);
}
return re;
}
};
照顾好自己的身体,控制好自己的情绪,加油!
以上就是关关关于这道题的总结经验,希望大家能够理解,有什么问题可以在我们的专知公众号平台上交流或者加我们的QQ专知-人工智能交流群 426491390,也可以加入专知——Leetcode刷题交流群(请先加微信小助手weixinhao: Rancho_Fang)。 同时请,关注我们的公众号,获取最新关于专知以及人工智能的资讯、技术、算法等内容。扫一扫下方关注我们的微信公众号。