• 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 }
  • 相关阅读:
    KINDLE 小说下载--超级书库
    修改PR Cs6,PS Cs6,AU Cs6的启动界面
    SQLMAP用户手册
    Burp Suite 实战指南--说明书
    XSS跨站测试代码
    万能密码字典
    python数据结构之队列(一)
    python数据结构之栈
    python实现链表(二)
    python实现链表(一)
  • 原文地址:https://www.cnblogs.com/xiaolu266/p/7141751.html
Copyright © 2020-2023  润新知