• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C语言 > 求子数组最大和的解决方法详解

求子数组最大和的解决方法详解

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了求子数组的最大和,求连续子数组的最大和,分治法求最大子数组,纸婚2 求子记,重金求子等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
题目:输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。
例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。
如果不考虑时间复杂度,我们可以枚举出所有子数组并求出他们的和。不过非常遗憾的是,由于长度为n的数组有O(n2)个子数组;而且求一个长度为n的数组的和的时间复杂度为O(n)。因此这种思路的时间是O(n3)。
很容易理解,当我们加上一个正数时,和会增加;当我们加上一个负数时,和会减少。如果当前得到的和是个负数,那么这个和在接下来的累加中应该抛弃并重新清零,不然的话这个负数将会减少接下来的和。基于这样的思路,我们可以写出如下代码:
可能有些同学会对为什么:数组元素“sum - 最小子段和 = 跨过a[n-1]到a[0]情况中的最大子段和”这一点有些疑问。我们可以这样理解:n个数的和是一定的,那么如果我们在这n个数中找到连续的一段数,
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 求子数组最大和的解决方法详解
  • 求子数组最大和的实例代码

相关文章

  • 2017-05-28深入学习C语言中的函数指针和左右法则
  • 2017-05-28《C++ primer plus》读书笔记(一)
  • 2017-05-28c语言++放在前面和后面的区别分析
  • 2017-05-28C++标准之(ravalue reference) 右值引用介绍
  • 2022-04-30C语言中的二进制数、八进制数和十六进制数
  • 2017-05-28C++多线程编程时的数据保护
  • 2017-05-28C语言演示对归并排序算法的优化实现
  • 2017-05-28C 语言基础教程(我的C之旅开始了)[四]
  • 2017-05-28c++线程池实现方法
  • 2017-05-28C++求1到n中1出现的次数以及数的二进制表示中1的个数

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C语言中字符串常用函数strcat与strcpy的用法介绍
    • 详解C语言的exp()函数和ldexp()函数以及frexp()函数
    • C语言数据结构中串的模式匹配
    • c++图像处理:24位真彩图颜色变换实例
    • 使用c语言判断100以内素数的示例(c语言求素数)
    • iostream与iostream.h的区别详细解析
    • VC6.0常用快捷键大全
    • C语言求Fibonacci斐波那契数列通项问题的解法总结
    • 分享C++面试中string类的一种正确写法
    • C++ new/delete相关知识点详细解析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有