题目:

在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。

思路:

保存两个值:当前和sum、最大和max。当sum小于等于0时,置sum为当前值;否则将当前值加到sum上。每次sum和max比较,更新max。

另外,动态规划的思路代码和这里一样。动态规划就是考虑 f(i) 和 f(i-1) 之间的关系。

注意:

需要注意的就是,sum和max初始值的设定,特别是max的初始值。max初始值不能设置为0,因为输入可能全为负数,应该是 int 的最小值 0x80000000。或者将sum和max初始化为下标为0的元素的值。

另外,需要判断输入数组的个数。

代码:

class Solution {
public:int FindGreatestSumOfSubArray(vector<int> array) {if(array.size()<=0)  return 0;int max=array[0];int sum=array[0];for(int i=1;i<array.size();++i){if(sum<=0)  sum=array[i];else sum+=array[i];max=max>sum?max:sum;}return max;}
};

转载于:https://www.cnblogs.com/buxizhizhou/p/4722354.html

【剑指offer】面试题31:连续子数组的最大和相关推荐

  1. 剑指offer面试题42. 连续子数组的最大和(动态规划)

    题目描述 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 思路 详见链接 代码 class Solution: ...

  2. 【剑指offer-Java版】31连续子数组的最大和

    连续子数组最大和,要求O(n)时间复杂度 思路:核心思想就是当前遍历数组的时候,遇到的是一个正数,计算这个正数加上已有的和得到一个新的和 如果这个新的和比当前的正数大,那么保留该和否者更新和为当前正数 ...

  3. 面试题31.连续子数组的最大和

    题目:输入一个整型数组,数组里有正数也有负数.数组中一个或者连续多个整数组成一个子数组. 求所有子数组的和的最大值.要求时间复杂度O(n) 本题可以把所有子数组全部找出来再求其和的最大值便可以得出,但 ...

  4. 剑指offer面试题[31]-连续数组的最大和

    题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决.但是,如果向量 ...

  5. 剑指offer——面试题31:连续子数组的最大和

    剑指offer--面试题31:连续子数组的最大和 Solution1: 第一次做这道题.. 讲道理是这是标准的动态规划的题目,可是思路未完全想好. min_element(iterator, iter ...

  6. [剑指offer]面试题31:连续子数组的最大和

    面试题31:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). ❖ 解法一:举例分析数组的 ...

  7. 剑指offer面试题31. 栈的压入、弹出序列(链表)

    题目描述 输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2 ...

  8. 剑指Offer面试题:28.连续子数组的最大和

    一.题目:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).例如输入的数组为{1,-2,3 ...

  9. 【剑指 offer】(31)—— 连续子数组的最大和(动态规划)

    题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为 O(n)O(n). 例如,输入的数组为 {1, -2, 3, 10, ...

  10. 【LeetCode】剑指 Offer 42. 连续子数组的最大和

    [LeetCode]剑指 Offer 42. 连续子数组的最大和 文章目录 [LeetCode]剑指 Offer 42. 连续子数组的最大和 一.动态规划 一.动态规划 状态定义 设动态规划列表 dp ...

最新文章

  1. end-to-end 的神经网络
  2. Redis 笔记系列(十一)——Redis的发布和订阅机制
  3. ZooKeeper典型应用场景一览
  4. shell批量插入数据
  5. python全景图像拼接_Python+OpenCV实现图像的全景拼接
  6. cs精英游戏python代码_python面向对象-cs游戏示例
  7. Intellij IDEA 14.x 菜单项中Compile、Make和Build的区别
  8. UTM 用户线程模型
  9. i7-9700与E5 2667 V2空载功耗对比
  10. Atitit.日志系统slf4j的使用
  11. 用百度地图开发android程序时,location.getAddrStr()总是为null的解决方法
  12. Densepose安装教程--依据Github官方教程成功安装
  13. 第一章:客户端网页编程简介
  14. word文档怎么删除多余的空白页?
  15. iPhone内存比Android手机小,iPhone内存为什么一直这么小
  16. react antd design columns 配置解析
  17. 亲子教育资源库大全集
  18. 从足球说到鲁伯特之泪
  19. NOI2019退役记
  20. linux系统加载u盘的服务,Linux系统下挂载U盘的方法

热门文章

  1. 北京黑马计算机培训宿舍图案,黑马经典图形!
  2. tf.app.flags 定义命令行可选参数
  3. 安装hadoop2.6.0伪分布式环境
  4. Fragment之一:Fragment入门
  5. Flutter升级到1.12填坑指南
  6. ES6 系列之 Babel 是如何编译 Class 的(上)
  7. redhat7.0配置网卡
  8. python json模块 超级详解
  9. zabbix常用配置
  10. js实现上传图片及时预览