Python语言描述连续子数组的最大和


Posted in Python onJanuary 04, 2018

题目描述

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

思路:

最大和连续子数组一定有如下几个特点:

1、第一个不为负数

2、如果前面数的累加值加上当前数后的值会比当前数小,说明累计值对整体和是有害的;如果前面数的累加值加上当前数后的值比当前数大或者等于,则说明累计值对整体和是有益的。

步骤:

1、定义两个变量,一个用来存储之前的累加值,一个用来存储当前的最大和。遍历数组中的每个元素,假设遍历到第i个数时:

①如果前面的累加值为负数或者等于0,那对累加值清0重新累加,把当前的第i个数的值赋给累加值。

②如果前面的累加值为整数,那么继续累加,即之前的累加值加上当前第i个数的值作为新的累加值。

2、判断累加值是否大于最大值:如果大于最大值,则最大和更新;否则,继续保留之前的最大和

# -*- coding: utf-8 -*- 
""" 
Date: Thu Nov 02 11:00:40 2017 
 
Created by @author: xiaoguibao 
 
E-mail: mingliumengshao@163.com 
 
连续子数组的最大和 
Content: 输入一个整形数组,有正数和负数,数组中的一个或连续多 
个整数组成一个子数组,O(n)时间求所有子数组的和的最大值。 
 
""" 
 
def function(lists): 
  max_sum = lists[0] 
  pre_sum = 0 
  for i in lists: 
    if pre_sum < 0: 
      pre_sum = i 
    else: 
      pre_sum += i 
    if pre_sum > max_sum: 
      max_sum = pre_sum 
  return max_sum 
 
def main(): 
  lists=[6,-3,1,-2,7,-15,1,2,2] 
  print function(lists) 
   
if __name__ == "__main__": 
  main()

总结

以上就是本文关于Python语言描述连续子数组的最大和的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站其他相关专题,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
python获取糗百图片代码实例
Dec 18 Python
urllib2自定义opener详解
Feb 07 Python
浅谈django model postgres的json字段编码问题
Jan 05 Python
python async with和async for的使用
Jun 20 Python
用python wxpy管理微信公众号并利用微信获取自己的开源数据
Jul 30 Python
Django框架HttpResponse对象用法实例分析
Nov 01 Python
python使用Geany编辑器配置方法
Feb 21 Python
Python通过zookeeper实现分布式服务代码解析
Jul 22 Python
编译 pycaffe时报错:fatal error: numpy/arrayobject.h没有那个文件或目录
Nov 29 Python
python中_del_还原数据的方法
Dec 09 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
Feb 01 Python
5道关于python基础 while循环练习题
Nov 27 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
Jan 03 #Python
Python编程pygame模块实现移动的小车示例代码
Jan 03 #Python
python编程实现随机生成多个椭圆实例代码
Jan 03 #Python
Python通过Pygame绘制移动的矩形实例代码
Jan 03 #Python
Python模拟脉冲星伪信号频率实例代码
Jan 03 #Python
Python简单实现socket信息发送与监听功能示例
Jan 03 #Python
python实现Floyd算法
Jan 03 #Python
You might like
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
php递归法读取目录及文件的方法
2015/01/30 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
cssQuery()的下载与使用方法
2007/01/12 Javascript
简略的前端架构心得&amp;&amp;基于editor为例子的编码小技巧
2010/11/25 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
2011/12/26 Javascript
jQuery实现无限往下滚动效果代码
2016/04/16 Javascript
详细谈谈AngularJS的子级作用域问题
2016/09/05 Javascript
将 vue 生成的 js 上传到七牛的实例
2017/07/28 Javascript
Angular4实现图片上传预览路径不安全的问题解决
2017/12/25 Javascript
解决angularjs中同步执行http请求的方法
2018/08/13 Javascript
详解在vue-cli中使用graphql即vue-apollo的用法
2018/09/08 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
nodejs语言实现验证码生成功能的示例代码
2019/10/13 NodeJs
[04:22]DSPL第二期精彩集锦:残血反杀!
2014/12/10 DOTA
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
编写自定义的Django模板加载器的简单示例
2015/07/21 Python
Python实现Youku视频批量下载功能
2017/03/14 Python
python队列queue模块详解
2018/04/27 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
pyqt5中动画的使用详解
2020/04/01 Python
基于pandas向csv添加新的行和列
2020/05/25 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
2020/07/13 Python
利用python+request通过接口实现人员通行记录上传功能
2021/01/13 Python
python中os.remove()用法及注意事项
2021/01/31 Python
HTML5文档结构标签
2017/04/21 HTML / CSS
宣传标语大全
2014/07/01 职场文书
大专生自我鉴定怎么写
2014/09/16 职场文书
法院授权委托书格式
2014/09/28 职场文书
党员群众路线教育实践活动剖析材料
2014/10/10 职场文书
2015年体检中心工作总结
2015/05/27 职场文书
任长霞观后感
2015/06/16 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
小学课改工作总结
2015/08/13 职场文书
导游词之绍兴柯岩古镇
2020/01/09 职场文书