《剑指offer》面试题31——连续子数组的最大和
#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——连续子数组的最大和相关推荐
- 面试题31.连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数.数组中一个或者连续多个整数组成一个子数组. 求所有子数组的和的最大值.要求时间复杂度O(n) 本题可以把所有子数组全部找出来再求其和的最大值便可以得出,但 ...
- 【剑指offer-Java版】31连续子数组的最大和
连续子数组最大和,要求O(n)时间复杂度 思路:核心思想就是当前遍历数组的时候,遇到的是一个正数,计算这个正数加上已有的和得到一个新的和 如果这个新的和比当前的正数大,那么保留该和否者更新和为当前正数 ...
- 剑指offer面试题42. 连续子数组的最大和(动态规划)
题目描述 输入一个整型数组,数组里有正数也有负数.数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 思路 详见链接 代码 class Solution: ...
- [剑指offer]面试题31:连续子数组的最大和
面试题31:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n). ❖ 解法一:举例分析数组的 ...
- 剑指offer——面试题31:连续子数组的最大和
剑指offer--面试题31:连续子数组的最大和 Solution1: 第一次做这道题.. 讲道理是这是标准的动态规划的题目,可是思路未完全想好. min_element(iterator, iter ...
- 剑指Offer面试题:28.连续子数组的最大和
一.题目:连续子数组的最大和 题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).例如输入的数组为{1,-2,3 ...
- 【剑指 offer】(31)—— 连续子数组的最大和(动态规划)
题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为 O(n)O(n). 例如,输入的数组为 {1, -2, 3, 10, ...
- 连续子数组的最大和Java
目录 题目要求 实现思路 代码展示 代码讲解 总结 题目要求 在一个数组中,找到连续子数组的最大和.重点是1.连续 2.最大 3.和.我们把它翻译成人话,举个例子:arr=[1, -2, 3, 1]. ...
- 连续子数组的最大和python_连续子数组的最大和
题目:输入一个整型数组,数组里有正数也有负数.数组中一个或连续的多个整数组成一个子数组.求元素和值最大的那个子数组的和值. C#实现:public static int FindGreatestSum ...
- 《剑指offer》-- 复杂链表的复制、字符串的排列、数组中出现次数超过一半的数字、连续子数组的最大和
一.复杂链表的复制: 参考牛客网的chancy:https://www.nowcoder.com/questionTerminal/f836b2c43afc4b35ad6adc41ec941dba 1 ...
最新文章
- Hive 05_hive变量、动态分区
- Hive 基础(1):分区、桶、Sort Merge Bucket Join
- leetcode 456. 132 模式(单调栈)
- git(4):git安装教程
- Github如何更新Fork的仓库
- linux msgctl函数,msgctl()函数
- chapter10--进程和计划任务管理
- 疑似BAT的BUG及避错办法
- 如何用python进行数据处理?(一)
- 怎样将纸质文档转换成图片,然后转换成word文字
- 现代魔法学院——闲聊哈希表及哈希表的链地址法实现
- 【数据科学家学习小组】之统计学(第二期)第一周(20191028-20191103)-momi
- android 高光动画,InstrumentPanelView
- vue uniapp通用省市下拉选择器组件 布局样式可灵活根据ui变更 (区域 可根据数组嵌套的格式继续往下模仿即可)
- 如何删除ZIP压缩包的密码?
- Material doesn‘t have a texture property ‘_MainTex
- Phong与Blinn-Phong
- Xilinx 7系列原语使用(时钟相关)——(一)
- TP-Link wr703n 刷Openwrt始末
- 计算机一级msoffice考哪个版本,2021计算机二级office考哪个版本 如何备考
热门文章
- android 邮件发送html,如何发送HTML电子邮件
- Error: Invalid or corrupt
- php打包命令,PHP调用Linux的命令行执行文件压缩命令
- cmd后台运行exe_了解运行命令的原理,为QQ制作运行命令启动
- Javascript特效:商品橱窗
- Map遍历KeySet()和EntrySet/ Map.forEach的性能分析
- C++11常用特性的使用经验总结-概述及目录
- 分布式存储系统学习笔记(二)—分布式文件系统(2)—淘宝文件系统(TFS)
- 统一视角理解实例分割算法:最新进展分析与总结
- Adobe Reader 2019 Offline Installer, Free Download - Best PDF Reader