题目描述

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

解题思路

废话连篇的题目。。。。。

暴力法O(N2)O(N^2)O(N2),归并法O(Nlog⁡N)O(N\log N)O(NlogN),动态规划时线性时间的O(N)O(N)O(N)。这里使用动态规划。sum表示当前已经求出的最长子序列的和,curSum表示正在计算的子序列的和。如果curSum加上一个元素后,大于当前的序列,那么就进行更新;如果加上一个元素后,curSum仍然是负数,有两种情况:

  • sum>=0的情况时,curSum添加这个数据后,不能递增了,因此要重新归零
  • sum<0时,说明始终没有遇到正数,因此不能归零,否则会更替掉sum的正确值;因此只能保留当前的数据array[i]

AC代码

class Solution {public:int FindGreatestSumOfSubArray(vector<int> array) {int curSum = array[0]; // 当前状态最大和int sum = array[0];    // 结果的最大和int len = array.size();for(int i = 1; i < len; ++i) {curSum += array[i];if(curSum < 0) {if(sum >= 0) {   // 如果sum>=0,说明有非负值在序列中curSum = 0;} else {   // 只能标定当前的点curSum = array[i];}}if(curSum > sum) {sum = curSum;}}return sum;}
};

剑指offer之连续子数组的最大和相关推荐

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

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

  2. 剑指 Offer 42. 连续子数组的最大和(官解)

    14天阅读挑战赛 努力是为了不平庸~ 算法学习有些时候是枯燥的,这一次,让我们先人一步,趣学算法!欢迎记录下你的那些努力时刻(算法学习知识点/算法题解/遇到的算法bug/等等),在分享的同时加深对于算 ...

  3. LeetCode -- 剑指 Offer 42. 连续子数组的最大和

    剑指 Offer 42. 连续子数组的最大和 线性 DP 题. 针对于数组nums[i] 而言,以它为结尾的子数组分两种情况:(题目限制:必须是连续数组) num[i] 自身作为独立子数组:f[i] ...

  4. 剑指 Offer 42. 连续子数组的最大和

    摘要 剑指 Offer 42. 连续子数组的最大和 一. 动态规划分析 1.1 动态规划思路分析 假设nums数组的长度是n,下标从0到n−1.我们用 f(i)代表以第i个数结尾的连续子数组的最大和, ...

  5. 【最佳解法】剑指 Offer 42. 连续子数组的最大和

    我是小张同学,立志用最简洁的代码做最高效的表达 思路:动态规划 假设nums\textit{nums}nums 数组的长度是 nnn,下标从 000 到 n−1n-1n−1. 我们用 f(i)f(i) ...

  6. 剑指offer:连续子数组的最大和

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

  7. Leetcode 剑指 Offer 42. 连续子数组的最大和 (每日一题 20211014)

    输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值.要求时间复杂度为O(n).示例1:输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出: 6 ...

  8. leetcode剑指 Offer 42. 连续子数组的最大和(动态规划)

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

  9. 【剑指offer】连续子数组的最大和(未完待续。。。)

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

  10. 剑指 Offer 42. 连续子数组的最大和java

    输入一个整型数组,数组中的一个或连续多个整数组成一个子数组.求所有子数组的和的最大值. 要求时间复杂度为O(n). 示例1: 输入: nums = [-2,1,-3,4,-1,2,1,-5,4] 输出 ...

最新文章

  1. 手把手教你走进Hyperledger Fabric
  2. CBAC(基于内容的访问控制)
  3. android ping -c 4 -i 1 -w 1000,[Android]ping -c 1 -w 100 sina.cn的解析
  4. 原生JS实现跨浏览器的事件处理程序
  5. qq android2.0,取代QQ?腾讯TIM安卓2.0发布:10GB云盘免费用
  6. jquery图片延迟加载 lazy-src
  7. 使用C语言扩展Python(四)
  8. python解不定积分_python快速求解不定积分和定积分
  9. (转载)Stackoverflow让我们变懒了?
  10. sstream用法(后续更新)
  11. mysql客户端汉化_【原创】Mysql客户端如何处理中文
  12. F - Ingenuous Cubrency ( UVa 11137 ,立方数之和,递推关系,算法进阶手册)
  13. 从阿里云DATAV GeoAtlas接口抽取行政区划数据
  14. 苹果6s照相快门声音设置_苹果手机内置录屏技巧,还能加入自己的声音,花3秒钟设置一下...
  15. 啡鸟集:什么样的咖啡豆,才是好的咖啡豆?
  16. ODrive应用 #3 odrive_gui入门指南
  17. 工业物联网有什么特征
  18. pcie 驱动程序分析
  19. Qt网络资源汇总(官网、源码、社区、博客)
  20. Starry的神奇魔法 矩阵快速幂

热门文章

  1. P3:线性分类、损失函数与梯度下降
  2. 计算机组成原理 第二章 数据的表示与运算
  3. 机器学习和传统编程有什么区别?✅
  4. Eclipse安装应知应会
  5. [素数拓展] 质因数的个数 [2007年清华大学计算机研究生机试真题]
  6. MySQL 事务控制语句(TCL)
  7. 模版 ----- 实数二分
  8. 【半年总结】愿有岁月可回首
  9. 敏捷开发中“可运行软件”的评审标准(兼谈敏捷开发中的迭代中期质量控制)...
  10. Flex 3快速入门: 构建高级用户界面 添加拖放支持