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 version 2.7 required, which was not found in the registry
Aug 26 Python
Python用list或dict字段模式读取文件的方法
Jan 10 Python
Python求出0~100以内的所有素数
Jan 23 Python
python通过百度地图API获取某地址的经纬度详解
Jan 28 Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 Python
Python增强赋值和共享引用注意事项小结
May 28 Python
Django中的用户身份验证示例详解
Aug 07 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
Nov 05 Python
django有外键关系的两张表如何相互查找
Feb 10 Python
python中wx模块的具体使用方法
May 15 Python
使用Pycharm在运行过程中,查看每个变量的操作(show variables)
Jun 08 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
Mar 04 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
Win2000+Apache+MySql+PHP4+PERL安装使用小结
2006/10/09 PHP
PHP7如何开启Opcode打造强悍性能详解
2018/05/11 PHP
IE不出现Flash激活框的小发现的js实现方法
2007/09/07 Javascript
javascript css在IE和Firefox中区别分析
2009/02/18 Javascript
用js实现的模拟jquery的animate自定义动画(2.5K)
2010/07/20 Javascript
JavaScript 盒模型 尺寸深入理解
2012/12/31 Javascript
JQuery的Ajax跨域请求原理概述及实例
2013/04/26 Javascript
JS动态调用方法名示例介绍
2013/12/18 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
Node.js安装教程和NPM包管理器使用详解
2014/08/16 Javascript
javascript中arguments,callee,caller详解
2016/03/16 Javascript
JavaScript中的splice方法用法详解
2016/07/20 Javascript
node express使用HTML模板的方法示例
2019/08/22 Javascript
对layui初始化列表的CheckBox属性详解
2019/09/13 Javascript
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
Vue开发环境跨域访问问题
2020/01/22 Javascript
基于react项目打包css引用路径错误解决方案
2020/10/28 Javascript
node.js如何操作MySQL数据库
2020/10/29 Javascript
vue项目配置 webpack-obfuscator 进行代码加密混淆的实现
2021/02/26 Vue.js
[52:57]2014 DOTA2国际邀请赛中国区预选赛 LGD-CDEC VS HGT
2014/05/21 DOTA
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
python安装PIL模块时Unable to find vcvarsall.bat错误的解决方法
2016/09/19 Python
Python语言描述最大连续子序列和
2017/12/05 Python
5款Python程序员高频使用开发工具推荐
2019/04/10 Python
详解django实现自定义manage命令的扩展
2019/08/13 Python
Python3实现将一维数组按标准长度分隔为二维数组
2019/11/29 Python
python使用梯度下降和牛顿法寻找Rosenbrock函数最小值实例
2020/04/02 Python
详解pycharm配置python解释器的问题
2020/10/15 Python
python如何快速拼接字符串
2020/10/28 Python
Html5剪切板功能的实现代码
2018/06/29 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
教师评优事迹材料
2014/01/10 职场文书
2014全国两会心得体会
2014/03/17 职场文书
趣味运动会通讯稿
2015/07/18 职场文书
2016优秀青年志愿者事迹材料
2016/02/25 职场文书
一篇文章带你掌握SQLite3基本用法
2022/06/14 数据库