【面试题】剑指Offer-31-求连续子数组的最大和
来源:互联网 发布:python 图论库 编辑:程序博客网 时间:2024/06/06 01:05
题目概述
解法思路
定义tmpSum = 0 和 Sum = 0
遍历这个数组
当tmpSum小于0时,直接将tmpSum赋值为0
当tmpSum不小于0时,将tmpSum加上当前的数字
如果tmpSum比Sum大,则更新Sum的值
代码实现
#include<iostream>using namespace std;pair<bool,int> MaxArrOfNum(int* arr, size_t n){if (arr == NULL || n == 0)return make_pair(false, 0);//判断是不是全是负数//全是负数,不满足题目要求size_t i = 0;while (i < n){if (arr[i] > 0)break;++i;}if (i == n)return make_pair(false, 0);int maxSum = 0;int tmpSum = 0;for (size_t i = 0; i < n; ++i){//如果小于0,直接覆盖tmpSum//如果大于0,加到tmpSum上if (tmpSum <= 0)tmpSum = arr[i];elsetmpSum += arr[i];//将maxSum置为tmpSum和maxSum中的最大值if (tmpSum > maxSum)maxSum = tmpSum;}return make_pair(true, maxSum);}void TestMaxArrOfNum(){int arr[] = { 1, -2, 3, 10, -4, 7, 2, -5 };//int arr[] = { -1, -1, -1, -1 };pair<bool, int> ret = MaxArrOfNum(arr, sizeof(arr) / sizeof(arr[0]));if (ret.first == true){int retNum = ret.second;cout << "最大的连续数组的值:" << retNum << endl;}else{cout << "输入的数组有误!" << endl;}}
1 0
- 剑指offer 面试题31 求连续子数组的最大和
- 剑指offer-面试题31 求连续子数组的最大和
- 【面试题】剑指Offer-31-求连续子数组的最大和
- 剑指offer面试题 求数组中连续子数组的最大和
- 《剑指Offer》面试题:连续子数组的最大和
- 剑指Offer之面试题31:求连续子数组最大和
- [剑指offer][面试题31]连续子数组的最大和
- 剑指offer面试题31:连续子数组的最大和
- 剑指Offer:面试题31 连续子数组的最大和
- 《剑指Offer》学习笔记--面试题31:连续子数组的最大和
- 【剑指Offer学习】【面试题31:连续子数组的最大和】
- 剑指Offer面试题31(java版):连续子数组的最大和
- 【剑指offer】5.2时间效率——面试题31:连续子数组的最大和
- 剑指offer代码解析——面试题31连续子数组的最大和
- 剑指offer-面试题31:连续子数组的最大和
- 剑指offer 面试题31:连续子数组的最大和 题解
- 剑指offer之面试题31连续子数组的最大和
- 剑指Offer:面试题31——连续子数组的最大和(java实现)
- Javascript比较运算符的应用
- SSO单点登录PHP简单版
- 将基本数据提升为对象的应用
- Linux--RH124---unit 9 openssh-server
- 项目中的一些文件夹不显示在eclipse资源管理器中
- 【面试题】剑指Offer-31-求连续子数组的最大和
- 利用自定义方法显示数组中的全部数据
- oracle 监控表数据变更触发器(脚本生成)
- eclipse创建maven工程的时候index.jsp报错解决方案
- with语句
- MFC 无标题窗口拖动
- Unity 项目优化解析(一)
- ip,mac地址等是否可以伪造
- Android基础框架1