博客
关于我
牛客题霸 [连续子数组的最大和] C++题解/答案
阅读量:138 次
发布时间:2019-02-27

本文共 1223 字,大约阅读时间需要 4 分钟。

最大连续子序列和问题是一个经典的算法题目,通常用Kadane算法解决。Kadane算法的基本思路是从左到右遍历数组,对于每个元素,判断其是否比当前累加值大。如果是,则更新当前累加值;否则,重置当前累加值为该元素的值。同时,每次更新最大累加值,记录最大的那个。

以下是详细的步骤解释:

  • 初始化变量:首先设置最大累加值maxx为数组的第一个元素,当前累加值current也为第一个元素。

  • 遍历数组:从第二个元素开始遍历数组。

  • 更新当前累加值:对于每个元素,判断其是否大于当前累加值加上该元素。若是,则将当前累加值设置为该元素的值;否则,将当前累加值更新为前一个累加值加上当前元素的值。

  • 更新最大累加值:在每次遍历后,比较当前累加值与maxx,若当前累加值更大,则更新maxx

  • 返回结果:遍历结束后,返回maxx,即为最大连续子序列的和。

  • 这种方法的时间复杂度是O(n),空间复杂度是O(1),非常高效。

    题目描述

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

    题解

    这个问题可以通过Kadane算法来解决。Kadane算法的基本思想是从左到右遍历数组,对于每个元素,判断它是否比当前累加值大。如果是,则更新当前累加值;否则,重置当前累加值为该元素的值。同时,每次遍历都要比较当前累加值和全局最大值,记录最大的那个。

    代码

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

    转载地址:http://quzb.baihongyu.com/

    你可能感兴趣的文章
    PHP5.4 pfsocketopen函数判断sock是否存活的bug(由memcached引起)
    查看>>
    Redis从入门到精通
    查看>>
    PHP5.6.x编译报错:Don't know how to define struct flock on this system, set --enable-opcache=no
    查看>>
    php5ts.dll 下载_php5ts.dll下载
    查看>>
    php7
    查看>>
    PHP7 新特性
    查看>>
    PHP7+MySQL5.7+Nginx1.9. on Ubuntu 14.0
    查看>>
    php7.1.6 + redis
    查看>>
    php7中使用php_memcache扩展
    查看>>
    PHP7中十个需要避免的坑
    查看>>
    php7和PHP5对比的新特性和性能优化
    查看>>
    PHP7安装pdo_mysql扩展
    查看>>
    PHP7实战开发简单CMS内容管理系统(7) 后台登录架构 用户登录校验
    查看>>
    php7,从phpExcel升级到PhpSpreadsheet
    查看>>
    PHP8.1 + ThinkPHP实战指南:高效构建现代化网站的六大技巧
    查看>>
    PHP8中match新语句的操作方法
    查看>>
    PHP:第一章——PHP中常量和预定义常量
    查看>>
    PHP:第一章——PHP中的位运算
    查看>>
    phpcms
    查看>>
    phpcms 2008 product.php pagesize参数代码注射漏洞
    查看>>