来源:https://leetcode.com/problems/maximum-subarray/#/description

Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array [-2,1,-3,4,-1,2,1,-5,4],the contiguous subarray [4,-1,2,1] has the largest sum = 6

我的C程序解法:

int maxSubArray(int* nums, int numsSize){   int i,sum=0, maxsum=nums[0];

    for (i=0; i<numsSize; i++)    {        if (maxsum <= 0)        {            maxsum = maxsum<nums[i]?nums[i]:maxsum;//if values are all negetive return maxnum            sum = maxsum>0?maxsum:0;//记录第一次出现正数的值用于有效值的累加        }        else        {            sum += nums[i];            maxsum = maxsum>sum?maxsum:sum;//记录最大的和            if (sum < 0)            {               sum = 0;//当和出现负数时候,重新计算剩余子数组的最大值            }        }

    }    return maxsum;}

主要思路:1、当所有数为非正数时,最大的值则是最大的子数组和          2、从第一个是正数的值开始往后累加,并记录下累加得到的最大值          3、当累加的值出现负数后,则表示有效的子数组已经结束,开始下一组的累加和最大值比较,到数组结束则得出最大的和

结论:对问题的抽象归纳很重要,重点在于明白只有当子数组的和是正数时,才是有效的需要继续计算的

求数组内子数组最大的和(Maximum Subarray )相关推荐

  1. 求数组的子数组之和的最大值

    一个有N个整数元素的一维数组( A[0], A[1], ... , A[n-2], A[n-1]),子数组之和的最大值是什么?(要求子数组的元素是连续的) 例子:有数组( -2, 5, 3, -6, ...

  2. 编程之美 2.14求数组的子数组之和的最大值

    对于一个有N个元素的数组,a[0]~a[n-1],求子数组最大值. 如:数组A[] = [−2, 1, −3, 4, −1, 2, 1, −5, 4],则连续的子序列[4,−1,2,1]有最大的和6. ...

  3. Programe_Of_Beauty:2.14 求数组的子数组之和的最大值

    问题:一个有N个整数元素的一维数组,那么求子数组和的最大值. 分析:首先我们明确问题,子数组是联系的,不用返回元素的位置,元素是整数,可能为正,负或0.我们来看看最经典的解法:a[0],a[1]-a[ ...

  4. 算法-求数组的子数组之和的最大值

    一个一维int数组,这个数组有很多子数组,那么子数组之和的最大值是什么呢? 思考 1.题目说的子数组是连续的: 2.题目只需要求和,并不需要返回子数组的具体位置: 3.数组的元素是整数,所以数组可能包 ...

  5. 编程之美2.14 求数组的子数组之和的最大值

          这是一个在面试中出现概率很高的一道题目,就拿我来说吧,面试了5家公司中,两家公司问了这道题目,可见,这道题目是非常经典的.       解题思想也不是很难,我熟悉的有:两种解题办法:   ...

  6. 求数组的子数组之和的最大值IV

    在之前的基础上又安排了二维数组的,在课上一开始是理解错要求了,简单的以为用循环数组就能解决,但是却忽视了子数组是否能构成矩形,之后课下和同学们讨论,主要是多重遍历,但是我还是没搞明白怎么构成新的二维数 ...

  7. 编程之美-求数组的子数组之和的最大值方法整理

    [试题描述] 方法一: 上面这个算法的时间复杂度为O(n^3),改进后如下: 此时算法的时间复杂度为O(n^2) 方法二:时间复杂度O(nlogn) 方法三:时间复杂度O(n) 改进一下,可以得到空间 ...

  8. 编程之美-2.14-求数组的子数组之和的最大值

    这个以前写过,见求数组的最长子数组之和的最大值 这里说一下后面扩展题目. 1. 简述 1) 如果数组首尾相连,即允许找到一组数字(A[i],···,A[n-1], A[0],···, A[j]),请使 ...

  9. 【C】课堂结对联系-求整数数组的子数组之和的最大值(党云龙、黄为)

    测试题目 求整数数组的子数组之和的最大值. 题目分析 首先是明确题目的目的:求最大值:其次是考虑子数组求和.这里将求最大值写成一个单独的函数.主函数未测试函数.这里用到了二重循环,时间复杂度为N^2. ...

  10. 二位数组的子数组最大值

    该题是poj的1050号题:http://poj.org/problem?id=1050 同时在<编程之美> 2.15 小节 思想是: 1.把二维降到一维,把 同一列的若干个数的和算出来, ...

最新文章

  1. UVA 10494 - If We Were a Child Again(高精度除法和取余)
  2. php五只猴子分椰子_PHP实现的猴王算法(猴子选大王)示例
  3. 分享一个自己用的Objective-C的Http接连类
  4. TypeScript - 不止稳,而且快
  5. GMIS 2017嘉宾王小川:人工智能技术与应用思考
  6. 专业软件 —— 硬件评测
  7. 初创公司怎么做销售数据分析_初创公司与Faang公司的数据科学
  8. oracle协议适配器错误tns,ORA-12560: TNS: 协议适配器错误 常见原因
  9. python自定义函数的关键字_Python3.x中自定义比较函数
  10. python mssqlserver_python for MSSQLserver
  11. Idea 工具在java文件中怎么避免 import .*包
  12. python怎么过滤停用词_第6天:文本处理流程——停用词的过滤、正则化操作
  13. 视频教程-QT/C++从新手到老手系列之QT基础篇-其他
  14. asc在mysql里面的意思_mysql数据库 asc函数
  15. 在html显示php代码,html跳转php只显示源代码
  16. snort安装使用教程
  17. ArcCatalog基础操作
  18. C语言_【学习笔记】二元一次方程的虚根
  19. hihocoder1829 Tomb Raider
  20. linux 查看内存fru,linux – 查找NIC的网络百分比

热门文章

  1. Capstone CS5210规格书|低成本HDMI转VGA方案设计
  2. CPAN下载安装pm包方法
  3. [CC2642r1] ble5 stacks 蓝牙协议栈 介绍和理解 TI协议栈下载
  4. Mac M2芯片Arm64安卓模拟器7.0安装xposed
  5. 深度学习用于股票预测_用于自动股票交易的深度强化学习
  6. 计算机win7开超级性能模式,win7系统设置最高性能的操作方法
  7. linux vim m,Linux vi(m)用法 (转)
  8. 产品经理必修课(4):深挖需求
  9. aardio怎么运行php,aardio
  10. Android 中app加固与瘦身