zoukankan      html  css  js  c++  java
  • LeetCode-Maximum Subarray[dp]

    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.

    标签: Divide and Conquer Array Dynamic Programming

    分析:最大连续子和问题,我们可以从头遍历数组,遍历到元素 i 时有两个选择:

    1.如果它大于等于零时,那就将它与前面的子和sum相加。

    2.如果它小于零时,则由该元素作为下一个子和sum的开头元素

    在遍历数组的同时记录最大的子和sumj即为最大连续子和;

    这里用动态规划的方法解决,设dp[i]表示从首元素到元素i的最大连续子和,所以有状态转移方程为:

    dp[i]=max(dp[i-1]+array[i],array[i]);

    参考代码:

     1 public class Solution {
     2     public int maxSubArray(int[] A) {
     3         int len=A.length;
     4         int ret=Integer.MIN_VALUE;
     5         int dp=0;
     6         for(int i=0;i<len;i++){
     7             dp=Math.max(dp+A[i], A[i]);
     8             ret=Math.max(ret, dp);
     9         }
    10         return ret;
    11     }
    12 }
  • 相关阅读:
    Centos7yum安装LNMP
    CentOS7安装和配置rsync+inotify
    SSH
    nginx https
    nginx rewrite
    nginx代理缓存
    nginx动静分离
    Centos7使用squid实现正向代理
    利用tengine的nginx_upstream_check_module来检测后端服务状态
    nginx基于tcp负载均衡
  • 原文地址:https://www.cnblogs.com/xiaolu266/p/7141751.html
Copyright © 2011-2022 走看看