程序员面试金典——最大连续数列和___
来源:互联网 发布:中国网络舆情监测中心 编辑:程序博客网 时间:2024/06/16 07:48
题目描述
对于一个有正有负的整数数组,请找出总和最大的连续数列。
给定一个int数组A和数组大小n,请返回最大的连续数列的和。保证n的大小小于等于3000。
测试样例:
[1,2,3,-6,1]
返回:6
思路:
动态规划法
时间复杂度:O(N)
终于到了动态规划的部分了,这么一步一步走来,感受到了算法的无穷魅力。那么如何用动态规划来处理这个问题?
首先,我们重温将一个问题用动态规划方法处理的准则:
“最优子结构”、“子问题重叠”、“边界”和“子问题独立”。
在本问题中,我们可以将子序列与其子子序列进行问题分割。
最后得到的状态转移方程为:
MaxSum[i] = Max{ MaxSum[i-1] + A[i], A[i]};
在这里,我们不必设置数组MaxSum[]。
代码实现:
import java.util.*;public class MaxSum { public int getMaxSum(int[] A, int n) { // write code here int max=0;int cur=0; for (int i = 0; i < n; i++) {cur +=A[i];if(cur>max){max=cur;}else if (cur<0) {cur =0;}}//for if(max==0){//如果全为负数的情况 Arrays.sort(A); return A[n-1]; } return max; }}
阅读全文
0 0
- 程序员面试金典——最大连续数列和___
- 程序员面试金典——最大连续数列和
- 《程序员面试金典》最大连续数列和
- 《Cracking the Coding Interview程序员面试金典》----最大连续数列和
- 程序员面试金典:子串判断、最大连续数列和
- 程序员面试金典——无缓存交换___
- 程序员面试金典——硬币表示___
- 程序员面试金典——最小调整有序___
- 最大连续数列和
- 程序员面试金典——解题总结: 9.17中等难题 17.8给定一个整数数组(有正数有负数),找出总和最大的连续数列,并返回总和
- SSL 1461——最大连续数列的和
- 求一个整形数组的和最大的连续子串 -------- 程序员面试金典
- 程序员面试金典——维护x的秩___
- 程序员面试金典——数组中的逆序对___
- 最大连续子数列和
- 最大连续数列的和
- 最大连续数列的和
- 最大连续数列的和
- ELK(二)ElasticSearch
- 面向对象三大特征之继承
- 编程小思想整理
- 二叉树遍历
- 复杂链表的复制
- 程序员面试金典——最大连续数列和___
- android学习路线
- 关于java和c++里面 “类 = 类” 的区别
- Python插入排序算法
- 06 OrangePiLite wifi驱动配置
- Android使用DownloadMange进行版本更新(兼容7.0)
- 扫描目标主机端口
- 计算机基础知识
- Hello World