letecode [53] - Maximum Subarray


Given an integer arraynums, 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.

题目大意:

  给定数组,找到具有最大和的连续子数组,返回该最大和。

理 解:

  初始最大和max、临时数值sum和为nums[0]。

  当sum<0 时,若下一个数nums[i] 大于sum,则sum重新设置为nums[i]。

  当sum>0时,直接加上下一个数nums[i]。

  每次都需将sum与最大和max比较,更新max值。

代 码 C++:

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

运行结果:

长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn