剑指offer—连续子数组的最大和
2015-10-04 23:45
351 查看
华电北风吹
天津大学认知计算与应用重点实验室
日期:2015/10/4
题目描述
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?
解析:分治策略,先分后和。讲问题划分为最大连续子数组是否要过中点,对于不过中点的递归求解,过中点的直接求解。复杂度为O(NlogN)
看网上一个牛逼代码
作为对比记录一下
算法导论—最大子数组问题
天津大学认知计算与应用重点实验室
日期:2015/10/4
题目描述
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?
解析:分治策略,先分后和。讲问题划分为最大连续子数组是否要过中点,对于不过中点的递归求解,过中点的直接求解。复杂度为O(NlogN)
class Solution { public: int FindGreatestSumOfSubArray(vector<int> array) { if(array.size()==0) return NULL; return func(array,0,array.size()-1); } int func(vector<int> &array,int start,int end) { if(start==end) return array[start]; int mid=(start+end)/2; int r1=1<<(sizeof(int)-1),r2=1<<(sizeof(int)-1),r3=1<<(sizeof(int)-1); if(mid>start) r1=func(array,start,mid-1); if(mid<end) r2=func(array,mid+1,end); int temp=0,leftmax=0,rightmax=0; for(int i=mid-1;i>=start;i--) { temp+=array[i]; leftmax=temp>leftmax?temp:leftmax; } temp=0; for(int i=mid+1;i<=end;i++) { temp+=array[i]; rightmax=temp>rightmax?temp:rightmax; } r3=leftmax+array[mid]+rightmax; return max(r1,max(r2,r3)); } };
看网上一个牛逼代码
//动态规划 public class Solution { public int FindGreatestSumOfSubArray(int[] array) { if(array == null || array.length < 1){ return 0; } int cur = array[0], max = array[0]; for(int i=1; i<array.length; i++){ cur = Math.max(array[i], cur + array[i]); max = Math.max(max, cur); } return max; } }
作为对比记录一下
算法导论—最大子数组问题
相关文章推荐
- javascript jquery cons…
- javascript基础6-对象继承机制实现
- javascript基础5-修改对象
- JavaScript权威指南学习之第9章 类和模块
- HTML冷门标签
- CSS样式----CSS属性:字体属性和文本属性(图文详解)
- HDU 5130 Signal Interference (2014年广州赛区现场赛D题)
- Javascript中使用replace()方法+正则表达式替换掉所有字符
- JavaScript中null和undefined的区别
- 关于html5的cache-manifest缓存失败的几点观察
- Bootstrap CSS 表格
- Bootstrap CSS 代码
- Bootstrap CSS 栅格
- JS(获得当前时间并且用2015-01-01格式表示)
- JavaScript中字符串的使用
- Extjs Web Desktop申请书
- HTML5存储方式
- 第二章:javascript: 数组
- 【JS】JS小案例之表格操作
- JS 对象进阶