【剑指offer】连续子数组的最大和
来源:互联网 发布:高等教育出版社 知乎 编辑:程序博客网 时间:2024/06/08 07:22
题目描述
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1)
思路
此题可用动态规划的思想,若用函数f(i)表示第i个数字结尾的子数组的最大和,我们可用如下公式求出
这个公式的含义是,当第i-1个数字结尾的子数组中所有数字的和小于等于0时,如果把这个非正数和第i个数字相加,得到的数字比第i 个数字本身还小,所以在这种情况下第i个数字结尾的子数组最大和为第i个数字本身,反之最大和为前i-1个数字的最大和加上第i个数字。
代码
public class Solution { public int FindGreatestSumOfSubArray(int[] array) { if (array == null || array.length <= 0 ) return 0; int currentSum = 0; int greatestSum = 0x80000000;//最小的负数// for ( int i = 0; i < array.length; i++){ if (currentSum <= 0) currentSum = array[i]; else currentSum += array[i]; if (currentSum > greatestSum) greatestSum = currentSum; } return greatestSum; }}
阅读全文
0 0
- [剑指offer]连续子数组最大和
- 剑指offer-最大连续子数组和
- 剑指offer:连续子数组最大和
- 剑指offer---连续子数组最大和
- 【剑指offer】连续子数组最大和
- 剑指offer:31-连续子数组的最大和
- 剑指Offer之连续子数组的最大和
- 【剑指offer】连续子数组的最大和
- 剑指offer-31:连续子数组的最大和
- 剑指offer--连续子数组的最大和
- 剑指Offer之 - 连续子数组的最大和
- 剑指offer之连续子数组的最大和
- 剑指offer 31 - 连续子数组的最大和
- 《剑指offer》连续子数组的最大和
- 剑指offer:连续子数组的最大和
- 【剑指Offer】连续子数组的最大和
- 剑指offer-连续子数组的最大和
- 剑指offer—连续子数组的最大和
- 启动 jack server 出现 Could not find or load main class com.android.jack.launcher.ServerLauncher的问题
- mac 配置jdk的环境变量
- Linux常用基础命令
- jq判断复选框状态方法
- php正则提取html图片(img)src地址与任意属性
- 【剑指offer】连续子数组的最大和
- 使用最广泛的Android爬虫指示器PagerSlidingTabStrip遇到的相关问题的解决,并源码修改
- vs2013下配置opencv2.4.10(win7 64位)
- 数字图像处理matlab版第八章
- Java笔记杨枝11.26
- Netstat命令详解
- 快学Scala-Actor并发编程实现WordCount
- attachmentSimple文件上传组件使用
- 转载: 理解Cookie和Session机制