LeetCode 53. Maximum Subarray

来源:互联网 发布:神虎数据恢复软件 编辑:程序博客网 时间:2024/05/16 11:37

1. 题目描述

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.

2. 解题思路

动态规划,计算以nums[i]结尾的最大子串和sum[i],然后数组中最大的值就是结果。
迭代方程:
if sum[i-1]>0:
sum[i]=nums[i]+sum[i-1]
else:
sum[i]=nums[i]

3. 实现代码

class Solution {public:    int maxSubArray(vector<int>& nums) {        int n=nums.size();        int sum=0;         int max_sum=INT_MIN;           for(int i=0;i<n;i++){              if(sum>=0){                  sum+=nums[i];              }else{                  sum=nums[i];              }              if(sum>max_sum){                  max_sum=sum;              }          }          return max_sum;      }};


0 0
原创粉丝点击