53. Maximum Subarray

来源:互联网 发布:多益网络策划笔试题目 编辑:程序博客网 时间:2024/06/06 02:14

题目描述:

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.

解题思路:

我们首先设一个中间变量k,用它来记录子数组的和。当k加上下一元素的和小于该元素本身的值时,将其换成下一元素,否则,换成它们的和。最后将其中最大的k 值作为结果输出。

代码:

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


0 0
原创粉丝点击