输入一个长度为n的整型数组array,数组中的一个或连续多个整数组成一个子数组,找到一个具有最大和的连续子数组。

1.子数组是连续的,比如[1,3,5,7,9]的子数组有[1,3],[3,5,7]等等,但是[1,3,7]不是子数组

2.如果存在多个最大和的连续子数组,那么返回其中长度最长的,该题数据保证这个最长的只存在一个

3.该题定义的子数组的最小长度为1,不存在为空的子数组,即不存在[]是某个数组的子数组

4.返回的数组不计入空间复杂度计算

思路和连续子数组的最大和相同。

【动态规划】leetcode 53:最大子数组和_muse_age的博客-CSDN博客

因为要最大输出方案,解决方法:

定义一个Path数组:

path[i]表示以第i个数结尾最大的和的上一个数的坐标,如果是(1)的情况,那么path[i]=i

如果是(2)的情况,那么path[i]=i-1;

最后,找到最大下标(因为要求最长,注意应是最后一个最大下标),

并用while循环,存到数组中,并逆序返回。

    int dp[100001];int path[100001];vector<int> FindGreatestSumOfSubArray(vector<int>& array) {for(int i=0;i<array.size();i++){path[i]=i;}dp[0]=array[0];for(int i=1;i<array.size();i++){if(dp[i-1]<0){dp[i]=array[i];path[i]=i;}else{dp[i]=max(dp[i-1]+array[i],array[i]);path[i]=i-1;}}int maxindex=0;int maxres=INT_MIN;for(int i=0;i<array.size();i++){if(dp[i]>=maxres){maxres=dp[i];maxindex=i;}}       vector<int>res;int k=maxindex;while(k!=path[k]){res.push_back(array[k]);k=path[k];}res.push_back(array[k]);reverse(res.begin(), res.end());return res;}
};

【动态规划】记录每步选择:牛客网:连续子数组的最大和(二)相关推荐

  1. 牛客题霸 [子数组最大乘积] C++题解/答案

    牛客题霸 [子数组最大乘积] C++题解/答案 题目描述 给定一个double类型的数组arr,其中的元素可正可负可0,返回子数组累乘的最大乘积. 题解: 同时记录最大值和最小值,为什么?因为给的元素 ...

  2. 牛客题霸 [子数组的最大累加和问题] C++题解/答案

    牛客题霸 [子数组的最大累加和问题] C++题解/答案 题目描述 给定一个数组arr,返回子数组的最大累加和 例如,arr = [1, -2, 3, 5, -2, 6, -1],所有子数组中,[3, ...

  3. 牛客题霸 [连续子数组的最大和] C++题解/答案

    牛客题霸 [连续子数组的最大和] C++题解/答案 题目描述 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学.今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和 ...

  4. 《剑指Offer》面试题四(牛客网在线编程第一题):二维数组中的查找(Java实现)

    题目:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. ...

  5. 【牛客刷题-算法】 NC19 连续子数组的最大和

    个人主页:清风莫追 推荐一款好用的面试.刷题神器牛客网:

  6. 最大连续子数组和 动态规划_剑指Offer算法题 33:连续子数组的最大和

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

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

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

  8. 连续子数组的最大和(基于动态规划)

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

  9. 牛客网SQL大厂面试真题(二)

    SQL25 某宝店铺的SPU数量 SELECT style_id, COUNT(1) AS SPU_num FROM product_tb GROUP BY style_id ORDER BY SPU ...

最新文章

  1. 实时传输协议(RTP)
  2. SpringBoot启动标识修改
  3. Linux 配置ip地址
  4. 关系型数据库 和 非关系型数据对比 以及 MySQL与Oracle对比
  5. 2019中国人工智能年度评选启幕,3大奖项,锁定AI Top玩家
  6. 网络配置_Linux网络环境配置
  7. python学习历程-安装篇(一)
  8. mybatis框架--学习笔记(下)
  9. 代数式的书写规范八种_中考数学一轮复习-第2节代数式与整式运算
  10. java rsa内容超长_RSA 非对称加密解密,超长字符串分块处理
  11. android+建模工具,什么是适用于Android Studio的3D模型环境的最佳工具
  12. Unity游戏开发——C#特性Attribute与自动化
  13. 在Spring中了解事务注释
  14. 洛谷 P1754 球迷购票问题
  15. 小米宣布新一轮组织架构调整,崔宝秋挂帅技术委员会
  16. 华为手机助手安卓版_91手机助手安卓版
  17. 基于Python2.7的阿里云API调用及运维相关
  18. solr之服务器搭建步骤
  19. 除了字节,腾讯也来“抢”阿里的这门生意
  20. 短视频Go研发框架实践-hulk

热门文章

  1. 揭秘成为最牛程序员的五大要诀
  2. UVA13029 Emoticons【文本处理】
  3. JSK-382 元音字母复制【入门】
  4. 贝叶斯推理(Bayes Reasoning)、独立与因式分解
  5. C Tricks(五)—— 比例和阈值的实现
  6. Trick(十)——any/all 实现
  7. Trick(九)—— ++i 与 i++ 的本质区别
  8. Python 数据结构与算法——拓扑排序
  9. gentoo 安装php7,在Gentoo安装Wifidog Portal
  10. php 对ioc容器的理解,关于php:了解IoC容器和依赖注入