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 相关文章推荐
Ubuntu 14.04+Django 1.7.1+Nginx+uwsgi部署教程
Nov 18 Python
使用基于Python的Tornado框架的HTTP客户端的教程
Apr 24 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
python画出三角形外接圆和内切圆的方法
Jan 25 Python
Python中实现变量赋值传递时的引用和拷贝方法
Apr 29 Python
tensorflow实现简单的卷积神经网络
May 24 Python
windows下python 3.6.4安装配置图文教程
Aug 21 Python
Python中的引用知识点总结
May 20 Python
Python获取当前脚本文件夹(Script)的绝对路径方法代码
Aug 27 Python
window7下的python2.7版本和python3.5版本的opencv-python安装过程
Oct 24 Python
Python Print实现在输出中插入变量的例子
Dec 25 Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 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
基于CakePHP实现的简单博客系统实例
2015/06/28 PHP
PHP使用mysql与mysqli连接Mysql数据库用法示例
2016/07/07 PHP
yii2 commands模式以及配置crontab定时任务的方法
2017/08/19 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
鼠标图片振动代码
2006/07/06 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
用js格式化金额可设置保留的小数位数
2014/05/09 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
JS+CSS简单树形菜单实现方法
2015/09/12 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
AngularJS实现表单验证功能
2017/01/09 Javascript
el表达式 写入bootstrap表格数据页面的实例代码
2017/01/11 Javascript
jQuery中animate()的使用方法及解决$(”body“).animate({“scrollTop”:top})不被Firefox支持的问题
2017/04/04 jQuery
Node.js安装配置图文教程
2017/05/10 Javascript
Angularjs中使用轮播图指令swiper
2017/05/30 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
Javascript三种字符串连接方式及性能比较
2019/05/28 Javascript
JS中的算法与数据结构之链表(Linked-list)实例详解
2019/08/20 Javascript
vue实现淘宝购物车功能
2020/04/20 Javascript
浅谈python中的变量默认是什么类型
2016/09/11 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
python编辑用户登入界面的实现代码
2018/07/16 Python
python 标准差计算的实现(std)
2019/07/29 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
CSS3 text-shadow实现文字阴影效果
2016/02/24 HTML / CSS
html5读取本地文件示例代码
2014/04/22 HTML / CSS
详解Html5页面实现下载文件(apk、txt等)的三种方式
2018/10/22 HTML / CSS
Wolford法国官网:奥地利奢侈内衣品牌
2020/08/11 全球购物
办加油卡单位介绍信
2014/01/09 职场文书
毕业生评语大全
2015/01/04 职场文书
综合管理员岗位职责
2015/02/11 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
python如何利用traceback获取详细的异常信息
2021/06/05 Python
SpringBoot实现quartz定时任务可视化管理功能
2021/08/30 Java/Android
JavaScript小技巧带你提升你的代码技能
2021/09/15 Javascript