LeetCode-Easy部分中标签为 Dynamic Programming(DP) 53. Maximum Subarray

原创 2017年04月09日 22:03:21

原题

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.

题目分析

这个题表面上看能分解为类似

MaxSubArray(int[] nums, int i, int j)

即求nums[i:j]子数组的最大值。再仔细分析后发现,找不到与原问题的契合点。

不妨换思路, maxSubArray(int[] nums, int i)
dyna[i] = nums[i] + (dyna[i-1]>0 ? dyna[i-1]:0)
max = Max(max, dyna[i])

代码实现

        public int MaxSubArray(int[] nums)
        {
            int n = nums.Length;
            int[] dyna = new int[n];
            dyna[0] = nums[0];
            int max = dyna[0];

            for (int i = 1; i < n; i++)
            {
                dyna[i] = nums[i] + (dyna[i - 1] > 0 ? dyna[i - 1] : 0);
                max = Math.Max(dyna[i], max);
            }

            return max;
        }

此题更精简的做法:
http://blog.csdn.net/daigualu/article/details/70980526

版权声明:本文为博主原创文章,欢迎转载,请注明 http://blog.csdn.net/daigualu

五大常用算法 ----DP 动态规划(Dynamic Programming)

一、基本概念     动态规划过程是:每次决策依赖于当前状态,又随即引起状态的转移。一个决策序列就是在变化的状态中产生出来的,所以,这种多阶段最优化决策解决问题的过程就称为动态规划。 二、基本思想...
  • Caroline424
  • Caroline424
  • 2016年07月24日 22:35
  • 2155

53. Maximum Subarray 最大子串和问题

Find the contiguous subarray within an array (containing at least one number) which has the largest ...
  • shakalaka1
  • shakalaka1
  • 2017年11月28日 20:10
  • 26

【LeetCode-面试算法经典-Java实现】【152-Maximum Product Subarray(子数组的最大乘积)】

【152-Maximum Product Subarray(子数组的最大乘积)】【LeetCode-面试算法经典-Java实现】【所有题目目录索引】代码下载【https://github.com/Wa...
  • DERRANTCM
  • DERRANTCM
  • 2015年08月24日 07:07
  • 2823

动态规划(dynamic programming)初步入门

通过金矿模型介绍动态规划 点击下载01背包测试数据.rar                 对于动态规划,每个刚接触的人都需要一段时间来理解,特别是第一次接触的时候总是想不通为什么这种方法可行,...
  • bit_zcy
  • bit_zcy
  • 2016年03月22日 10:16
  • 3151

算法设计与分析的基础知识(1)

距离算法考试还有两周的时间,准备从现在开始用笔记的形式记录自己学习或复习算法课程的成果。不是有那么一句名言嘛:好记性不如烂笔头。Learn From Now! 算法是一系列解决问题的清晰指令,即对符合...
  • weixin_36870659
  • weixin_36870659
  • 2017年06月21日 22:02
  • 69

最大子数组问题 Maximum Subarray

Maximum Subarray: algorithm这个问题我们先看下问题的描述:问题描述Find the contiguous subarray within an array (containi...
  • liu2012huan
  • liu2012huan
  • 2016年05月02日 15:41
  • 10311

LeetCode--Maximum Subarray 最大连续子序列和 (动态规划)

动态规划-经典问题——最大连续子序列和 LeetCode--Maximum Subarray 最大连续子序列和...
  • mason_mow
  • mason_mow
  • 2014年05月25日 21:32
  • 3083

CrackingtheCodeInterview之递归和动态规划

NO.1 有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一个方法,计算小孩有多少种上楼梯的方式。 解法:试想小孩在上到第n阶台阶前可能选择了一次上几阶台阶,1/2/3都有可能...
  • Alex123980
  • Alex123980
  • 2016年07月07日 21:43
  • 400

微分动态规划

本文从维基百科出发,详细介绍了动态微分规划(DDP)算法。
  • u013745804
  • u013745804
  • 2017年03月08日 18:22
  • 305

算法课第10周第2题——53. Maximum Subarray

题目描述: Find the contiguous subarray within an array (containing at least one number) which has t...
  • bwstardust
  • bwstardust
  • 2017年04月30日 00:59
  • 55
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:LeetCode-Easy部分中标签为 Dynamic Programming(DP) 53. Maximum Subarray
举报原因:
原因补充:

(最多只允许输入30个字)