面试题:最大的子数组之和,和最大子数组的始末位置
来源:互联网 发布:淘宝恢复淘宝客权重 编辑:程序博客网 时间:2024/05/20 05:59
给出一个数组,求出最大子数组的和以及始末位置。
直接给出代码解释:
int sub_array(int *array,int n){ int max2 = -INF; int sum = 0; int cur = 0; int count2 = 0; int flag; int _end; /*时间复杂度:o(n) 空间复杂度:o(1) */ while(cur < n) { /*记录最后一次max改变的位置*/ _end = cur; sum += array[cur++]; if(sum > max2) { max2 = sum; flag = _end; } if(sum < 0) { sum = 0; /*如果当前的和是小于的 就取当前的位置下一个位置作为开始*/ count2 = cur; } } cout << "from " << count2 << "to = " << flag << endl; return max2;}
const int INF = 1<<31;int sub_array(int a[],int len){ int MAX = -INF; int sum = 0; int cur = 0; int last = 0; for(int i=0;i<len;i++) { sum += a[i]; if(sum > MAX) { MAX = sum; //记录最后一次改变的位置 last = i; } if(sum < 0) { sum = 0; //最后一次改变的时候,当前位置小于0,从下一位置开始 cur = i+1; } } for(int k=cur;k<=last;k++) { cout << a[k] << " "; } cout << endl; cout << "from " << cur << "to " << last << endl; cout << MAX << endl; return MAX;}
1 0
- 面试题:最大的子数组之和,和最大子数组的始末位置
- 首尾相连数组的最大子数组和 淘宝面试题
- 经典笔试面试题-数组中最大的子数组之和
- 数组的子数组最大之和
- 面试题2:求子数组的最大和
- 面试题 31: 求子数组的最大和
- 面试题31:连续子数组的最大和
- 面试题27:连续子数组的最大和
- 面试题31:连续子数组的最大和
- 某公司面试题:连续子数组的最大和
- 面试题10-- 求子数组的最大和
- 面试题整理9 连续子数组的最大和
- 面试题五:求子数组的最大和
- 连续子数组的最大和(面试题 31)
- 面试题31 连续子数组的最大和
- 面试题 连续子数组的最大和
- 面试题(2)连续子数组的最大和
- 面试题31:连续子数组最大的和
- 关于TimePicker导致FC的问题解决方案
- js 图片的上传前预览上传的图片(兼容所有浏览器)
- 编程入门知识点:基本概念、流程图
- 玩命牛的成长记录(二十二)——盒子圆角和阴影
- z-tree获取叶子结点
- 面试题:最大的子数组之和,和最大子数组的始末位置
- ARM下传递函数使用的方法
- 第六章T3
- 常见机器学习算法总结
- Jetty9报JSP support not configured错误
- Vivado网表生成
- 第六章T4
- 程序的机器级表示
- 第六章T5