数据结构与算法面试题80道(3)
2016-03-09 20:07
344 查看
3.求子数组的最大和
题目:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大 。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18。
题目:
输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大 。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,
因此输出为该子数组的和18。
//从第一个数开始加,和记为sum,用一个变量max记录最大和,如果和小于0,sum=0,扫描整个数组。 #include<iostream> #include<cstdio> #include <limits> #include<vector> using namespace std; #define INT_MIN (numeric_limits<int>::min)() int main(){ int _max=INT_MIN,sum=0,temp,i; vector<int>_array; _array.reserve(1000);//设置容器大小,提高效率 while(~scanf("%d",&temp)){ if(temp>_max) _max=temp;//记录最大值 _array.push_back(temp); } if(_max<=0) { printf("该数组的子数组最大和为:%d\n",_max); return 0; } for(i=0;i<_array.size();i++){ if(sum<0) sum=0; sum+=_array[i]; if(sum>_max) _max=sum; } printf("该数组的子数组最大和为:%d\n",_max); return 0; }
相关文章推荐
- 一张大图总结数据结构与算法
- nginx学习七 高级数据结构之动态数组ngx_array_t
- 数据结构与算法面试题80道(二)
- 数据结构——链表
- LCT的初步理解
- 数据结构与算法面试题80道(一)
- LCT
- 从例子看数据结构
- 数据结构中常见的树(BST二叉搜索树、AVL平衡二叉树、RBT红黑树、B-树、B+树、B*树)(转)
- 数据结构之“Ordered List and Sorted List”(七)
- 数据结构和算法
- 《数据结构》链式有序表的合并
- php标准库(SPL)-数据结构(二)-SplStack详解
- php标准库(SPL)-数据结构(一)-SplDoublyLinkedList详解
- 数据结构基础(五)图以及DFS、BFS
- 数据结构与算法分析-素数计算
- 数据结构 第二章 线性表(2)malloc和realloc内存分配问题
- 7-4-无向图的邻接多重表存储结构-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- 7-3-有向图的十字链表存储结构-图-第7章-《数据结构》课本源码-严蔚敏吴伟民版
- 数据结构笔记-----链表