• [Leetcode] 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.

    Solution: dp
     1 public class Solution {
     2     public int maxSubArray(int[] A) {
     3         int sum=0;
     4         int max=Integer.MIN_VALUE;
     5         for(int i=0;i<A.length;++i){
     6             sum+=A[i];
     7             if(sum>=max)
     8                 max=sum;
     9             if(sum<0)
    10                 sum=0;
    11         }
    12         return max;   
    13     }
    14 }

     --------------------------------------------------------------------------

    20150219:

    通过维护一个全局最优和一个局部最优来做此题。

    全局最优:到当前元素为止的最优解;

    局部最优:必须包含当前元素的最优解。

    --------------

    对每一个A[i],都要判断A[i]是自立门户单干,还是跟着前边儿的元素一起。

    也就是

    localMax=Math.max(localMax+A[i],A[i]);

    这句代码的实现的。

     1 public class Solution {
     2     public int maxSubArray(int[] A) {
     3         if(A==null||A.length==0)
     4             return 0;
     5         int globalMax=A[0];
     6         int localMax=A[0];
     7         for(int i=1;i<A.length;++i){
     8             localMax=Math.max(localMax+A[i],A[i]);
     9             globalMax=Math.max(localMax,globalMax);
    10         }
    11         return globalMax;
    12     }
    13 }
  • 相关阅读:
    前端工程师基础课程作业
    对于API接口设计的几点看法
    socket socket.io
    移动端布局
    angularJS
    bootstrop的应用
    jquery基础
    html5本地存储
    ajax
    数据库类型
  • 原文地址:https://www.cnblogs.com/Phoebe815/p/4048559.html
Copyright © 2020-2023  润新知