• Maximum Subarray


    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.

    click to show more practice.

    More practice:

    If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

    more practice是搞笑的。
    还有更简单的方法,懒得改了。事实证明看书太多也不好。
    class Solution {
    public:
        int maxSubArray(int A[], int n) {
            vector<int> sum;
            if(n == 0)return 0;
            int maxsum =A[0];
            sum.push_back(A[0]);
            for(int i = 1 ; i < n ; i++)
            {
                int temp = sum[i-1]+A[i];
                if(temp > maxsum)maxsum = temp;
                sum.push_back(temp);
            }
    
            int min = 0;
            for(int i = 1 ; i < n;i++)
            {
                if(sum[i] - sum[min] > maxsum)
                maxsum = sum[i] - sum[min];
                if(sum[i] < sum[min])min = i;
            }
            
            
            return maxsum;
        }
    };
    

      

  • 相关阅读:
    Kafka速览
    分布式消息中间件(二)ActiveMQ
    PageUtil 分页
    Tomcat配置
    CryptographyUtil盐加密
    InitComponent的使用
    Shiro权限总结
    【转】Java自学之路——by马士兵
    ExcelUtil
    Java操作Excel之Poi
  • 原文地址:https://www.cnblogs.com/pengyu2003/p/3595264.html
Copyright © 2020-2023  润新知