zoukankan      html  css  js  c++  java
  • 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.

    Analysis:

    We define the state d[i] as the the largest sum we can get for subarrays the end at i. We then have the formula:

    if d[i-1]<0, then we will choose to just select A[i] at i, d[i]=A[i]; otherwise d[i]=A[i]+d[i-1];

    Solution:

     1 public class Solution {
     2     public int maxSubArray(int[] A) {
     3         int len = A.length;
     4         if (len==0) return 0;
     5         int[] d = new int[len];
     6         d[0] = A[0];
     7         int max = d[0];
     8         for (int i=1;i<len;i++){
     9             if (d[i-1]<0)
    10                 d[i]=A[i];
    11             else 
    12                 d[i]=A[i]+d[i-1];
    13             if (d[i]>max) max = d[i];
    14         }
    15 
    16         return max;
    17     }
    18 }
  • 相关阅读:
    FileDescriptor详解
    java序列化
    ObjectInputStream和ObejctOutputStream
    ByteArrayOutputStream
    ByteArrayInputStream
    PipedInputStream/PipedOutputStream
    字节输入流
    反义
    贪婪和非贪婪
    MYSQL数据库优化
  • 原文地址:https://www.cnblogs.com/lishiblog/p/4125522.html
Copyright © 2011-2022 走看看