#1.题目描述:
HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少是1)


//链接:https://www.nowcoder.com/questionTerminal/459bd355da1549fa8a49e350bf3df484
//来源:牛客网
#2.思路1——举例分析数组的规律
#3.思路2——应用动态规划
代码一样的

代码:

/*
算法时间复杂度O(n)
用total记录累计值,maxSum记录和最大
基于思想:对于一个数A,若是A的左边累计数非负,那么加上A能使得值不小于A,认为累计值对整体和是有贡献的。如果前几项累计值负数,则认为有害于总和,total记录当前值。
此时 若和大于maxSum 则用maxSum记录下来
*/#include<iostream>
#include <vector>using namespace std;void Print1Dvec(vector<int> myarray)
{if(myarray.size()==0)cout<<"vector为空"<<endl;int num=myarray.size();for(int i=0; i<num;i++)cout<<myarray[i]<<"  ";cout<<endl;
}
int FindGreatestSumOfSubArray(vector<int> array)
{if(array.empty())return 0;else{int curtotal=array[0];int MaxSum=array[0];for(int i=1; i<array.size(); i++){if(curtotal>=0)curtotal+=array[i];elsecurtotal=array[i];if(curtotal>MaxSum)MaxSum=curtotal;}return MaxSum;}
}int main()
{vector<int>vec={1,-2,3,10,-4,7,2,-5};Print1Dvec(vec);int Min=FindGreatestSumOfSubArray(vec);cout<<Min<<endl;return 0;
}

运行结果:

1  -2  3  10  -4  7  2  -5
18Process returned 0 (0x0)   execution time : 0.400 s
Press any key to continue.

《剑指offer》面试题31——连续子数组的最大和相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 连续子数组的最大和Java

    目录 题目要求 实现思路 代码展示 代码讲解 总结 题目要求 在一个数组中,找到连续子数组的最大和.重点是1.连续 2.最大 3.和.我们把它翻译成人话,举个例子:arr=[1, -2, 3, 1]. ...

  9. 连续子数组的最大和python_连续子数组的最大和

    题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求元素和值最大的那个子数组的和值. C#实现:public static int FindGreatestSum ...

  10. 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和

    一.复杂链表的复制: 参考牛客网的chancy:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 1 ...

最新文章

  1. Hive 05_hive变量、动态分区
  2. Hive 基础(1):分区、桶、Sort Merge Bucket Join
  3. leetcode 456. 132 模式(单调栈)
  4. git(4):git安装教程
  5. Github如何更新Fork的仓库
  6. linux msgctl函数,msgctl()函数
  7. chapter10--进程和计划任务管理
  8. 疑似BAT的BUG及避错办法
  9. 如何用python进行数据处理?(一)
  10. 怎样将纸质文档转换成图片,然后转换成word文字
  11. 现代魔法学院——闲聊哈希表及哈希表的链地址法实现
  12. 【数据科学家学习小组】之统计学(第二期)第一周(20191028-20191103)-momi
  13. android 高光动画,InstrumentPanelView
  14. vue uniapp通用省市下拉选择器组件 布局样式可灵活根据ui变更 (区域 可根据数组嵌套的格式继续往下模仿即可)
  15. 如何删除ZIP压缩包的密码?
  16. Material doesn‘t have a texture property ‘_MainTex
  17. Phong与Blinn-Phong
  18. Xilinx 7系列原语使用(时钟相关)——(一)
  19. TP-Link wr703n 刷Openwrt始末
  20. 计算机一级msoffice考哪个版本,2021计算机二级office考哪个版本 如何备考

热门文章

  1. android 邮件发送html,如何发送HTML电子邮件
  2. Error: Invalid or corrupt
  3. php打包命令,PHP调用Linux的命令行执行文件压缩命令
  4. cmd后台运行exe_了解运行命令的原理,为QQ制作运行命令启动
  5. Javascript特效:商品橱窗
  6. Map遍历KeySet()和EntrySet/ Map.forEach的性能分析
  7. C++11常用特性的使用经验总结-概述及目录
  8. 分布式存储系统学习笔记(二)—分布式文件系统(2)—淘宝文件系统(TFS)
  9. 统一视角理解实例分割算法:最新进展分析与总结
  10. Adobe Reader 2019 Offline Installer, Free Download - Best PDF Reader