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获取邮件地址的方法
Jul 10 Python
Python编程之字符串模板(Template)用法实例分析
Jul 22 Python
Python解析并读取PDF文件内容的方法
May 08 Python
解决PyCharm import torch包失败的问题
Oct 13 Python
浅谈Python编程中3个常用的数据结构和算法
Apr 30 Python
OpenCV搞定腾讯滑块验证码的实现代码
May 18 Python
python GUI库图形界面开发之PyQt5中QWebEngineView内嵌网页与Python的数据交互传参详细方法实例
Feb 26 Python
python获取栅格点和面值的实现
Mar 10 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
django 数据库 get_or_create函数返回值是tuple的问题
May 15 Python
总结Python连接CS2000的详细步骤
Jun 23 Python
python绘制简单直方图(质量分布图)的方法
Apr 21 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迭代器的内部执行过程详解
2013/11/12 PHP
php中Array2xml类实现数组转化成XML实例
2014/12/08 PHP
php利用cookies实现购物车的方法
2014/12/10 PHP
javascript nextSibling 与 getNextElement(node) 使用介绍
2011/10/13 Javascript
javascript 随机展示头像实现代码
2011/12/06 Javascript
深入理解JavaScript系列(6) 强大的原型和原型链
2012/01/15 Javascript
jQuery $.data()方法使用注意细节
2012/12/31 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
2014/12/18 Javascript
js实现n秒倒计时后才可以点击的效果
2015/12/20 Javascript
jQuery实现验证表单密码一致性及正则表达式验证邮箱、手机号的方法
2017/12/05 jQuery
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
详解JS中统计函数执行次数与执行时间
2018/09/04 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
js实现抽奖的两种方法
2020/03/19 Javascript
vue如何使用外部特殊字体的操作
2020/07/30 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
2020/10/28 Javascript
Python实现简单的可逆加密程序实例
2015/03/05 Python
Python获取任意xml节点值的方法
2015/05/05 Python
Python通过RabbitMQ服务器实现交换机功能的实例教程
2016/06/29 Python
详解python中 os._exit() 和 sys.exit(), exit(0)和exit(1) 的用法和区别
2017/06/23 Python
numpy.where() 用法详解
2019/05/27 Python
Python 的AES加密与解密实现
2019/07/09 Python
python3 图片 4通道转成3通道 1通道转成3通道 图片压缩实例
2019/12/03 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
详解python使用金山词霸的翻译功能(调试工具断点的使用)
2021/01/07 Python
基于CSS3的animation属性实现微信拍一拍动画效果
2020/06/22 HTML / CSS
June Jacobs尊积帕官网:知名的spa水疗护肤品牌
2019/03/21 全球购物
机械专业毕业生自荐信
2013/11/02 职场文书
校园十佳歌手策划书
2014/01/22 职场文书
环保专项行动方案
2014/05/12 职场文书
2014年光棍节活动策划方案(创意集锦)
2014/09/29 职场文书
承诺保证书格式
2015/02/28 职场文书
小学毕业教师寄语
2019/06/21 职场文书
深入探讨opencv图像矫正算法实战
2021/05/21 Python