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 相关文章推荐
python3访问sina首页中文的处理方法
Feb 24 Python
Python实现Linux命令xxd -i功能
Mar 06 Python
ubuntu安装mysql pycharm sublime
Feb 20 Python
Python对象属性自动更新操作示例
Jun 15 Python
Flask框架WTForm表单用法示例
Jul 20 Python
python traceback捕获并打印异常的方法
Aug 31 Python
Python使用百度api做人脸对比的方法
Aug 28 Python
python tkinter组件摆放方式详解
Sep 16 Python
python关于调用函数外的变量实例
Dec 26 Python
Python类的绑定方法和非绑定方法实例解析
Mar 04 Python
基于Python测试程序是否有错误
May 16 Python
使用OpenCV获取图像某点的颜色值,并设置某点的颜色
Jun 02 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调用dll的实例操作动画与代码分享
2012/08/14 PHP
关于PHP session 存储方式的详细介绍
2013/06/25 PHP
PHP时间格式控制符对照表分享
2013/07/23 PHP
PHP_Cooikes不同页面无法传递的解决方法
2014/03/07 PHP
使用PHPExcel实现数据批量导出为excel表格的方法(必看)
2017/06/09 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
Laravel数据库读写分离配置的方法
2019/10/13 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
jQuery中调用WebService方法小结
2011/03/28 Javascript
如何在一个页面显示多个百度地图
2013/04/07 Javascript
jquery.mobile 共同布局遇到的问题小结
2015/02/10 Javascript
flash+jQuery实现可关闭及重复播放的压顶广告
2015/04/15 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
vue 使用Jade模板写html,stylus写css的方法
2018/02/23 Javascript
基于element-ui组件手动实现单选和上传功能
2018/12/06 Javascript
JS实现简单日历特效
2020/01/03 Javascript
Python对列表排序的方法实例分析
2015/05/16 Python
python脚本设置超时机制系统时间的方法
2016/02/21 Python
使用Python的Twisted框架编写非阻塞程序的代码示例
2016/05/25 Python
Django添加feeds功能的示例
2018/08/07 Python
python实现图书借阅系统
2019/02/20 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
Python字符串三种格式化输出
2020/09/17 Python
美国现代家具网站:Design Within Reach
2018/07/19 全球购物
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
艺术应用与设计专业个人的自我评价
2013/11/19 职场文书
自我鉴定怎么写
2013/12/05 职场文书
预防艾滋病宣传标语
2014/06/25 职场文书
文明单位汇报材料
2014/12/24 职场文书
拾金不昧通报表扬范文
2015/05/05 职场文书
民事答辩状范本
2015/05/21 职场文书
教研活动主持词
2015/07/03 职场文书
2019年学校消防安全责任书(2篇)
2019/10/09 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python