博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
动态规划之Maximum Subarray
阅读量:2343 次
发布时间:2019-05-10

本文共 668 字,大约阅读时间需要 2 分钟。

题目描述如下:

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.

题目思路如下:

要求出使sum最大的连续子串,可知当当前sum<0时,下一次计算之后的求和值肯定小于下一个值,推出关系式为dp[i] = Math.max(sum,0) + nums[i];

因为将dp初始化为int[nums.length+1],所以实际的递推关系式为dp[i]=Math.max(sum,0) + nums[i-1];

代码如下:

public class Solution {

   public int maxSubArray(int[] nums) {
int len = nums.length;
int[] dp = new int[len + 1];
int max = Integer.MIN_VALUE;
for(int i = 1; i <= len; i++){
dp[i] = Math.max(dp[i - 1], 0) + nums[i - 1];
if(dp[i] > max)
max = dp[i];
}
return max;
}
}

转载地址:http://eobvb.baihongyu.com/

你可能感兴趣的文章
实战c++中的vector系列--正确释放vector的内存(clear(), swap(), shrink_to_fit()).md
查看>>
链表排序.md
查看>>
进程与线程的区别与联系、进程与线程的通信方式
查看>>
C++与C的区别
查看>>
产生死锁的必要条件及处理方法
查看>>
TCP和UDP的区别
查看>>
事务具有四个特性
查看>>
Hadoop Hdfs 配置
查看>>
tsung集群测试
查看>>
oracle定时删除表空间的数据并释放表空间
查看>>
解决文件提示: /bin/ksh^M: bad interpreter: bad interpreter:No such file or directory
查看>>
ajaxanywhere jsp 使用
查看>>
jquery的使用
查看>>
如何静态化JSP页面
查看>>
XML 与 Java 技术: 用 Castor 进行数据绑定
查看>>
Python未知领域系列:(附Python学习教程+Python学习路线)Python高级教程之面向对象
查看>>
盘点Python 面向对象编程最容易被忽视的知识点
查看>>
Python:一个可以套路别人的python小程序
查看>>
用Python告诉你:这些年,我们点过的的那些外卖
查看>>
如何美观地打印Python对象?这个标准库可以简单实现
查看>>