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获取CPU、内存和硬盘等windowns系统信息的2个例子
Apr 15 Python
Python计算已经过去多少个周末的方法
Jul 25 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
Jun 28 Python
python django 访问静态文件出现404或500错误
Jan 20 Python
python3中int(整型)的使用教程
Mar 23 Python
python 获取字符串MD5值方法
May 29 Python
python查找指定文件夹下所有文件并按修改时间倒序排列的方法
Oct 21 Python
python函数不定长参数使用方法解析
Dec 14 Python
Python @property装饰器原理解析
Jan 22 Python
Python生成器generator原理及用法解析
Jul 20 Python
Django自定义YamlField实现过程解析
Nov 11 Python
Python中非常使用的6种基本变量的操作与技巧
Mar 22 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 不同编码下的字符串长度区分
2009/09/26 PHP
PHP中改变图片的尺寸大小的代码
2011/07/17 PHP
php计算数组不为空元素个数的方法
2014/01/27 PHP
php中__toString()方法用法示例
2016/12/07 PHP
Linux下快速搭建php开发环境
2017/03/13 PHP
javascript实现的基于金山词霸网络翻译的代码
2010/01/15 Javascript
javascript设计模式 接口介绍
2012/07/24 Javascript
百度判断手机终端并自动跳转js代码及使用实例
2014/06/11 Javascript
用jquery模仿的a的title属性的例子
2014/10/22 Javascript
javascript面向对象之访问对象属性的两种方式分析
2015/01/13 Javascript
深入理解JavaScript系列(26):设计模式之构造函数模式详解
2015/03/03 Javascript
使用基于Node.js的构建工具Grunt来发布ASP.NET MVC项目
2016/02/15 Javascript
在AngularJS框架中处理数据建模的方式解析
2016/03/05 Javascript
jQuery select自动选中功能实现方法分析
2016/11/28 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
微信小程序云开发使用方法新手初体验
2019/05/16 Javascript
了解javascript中的Dom操作
2019/05/27 Javascript
怎么使用javascript深度拷贝一个数组
2019/06/06 Javascript
使用JavaScrip模拟实现仿京东搜索框功能
2019/10/16 Javascript
Python 调用VC++的动态链接库(DLL)
2008/09/06 Python
python通过shutil实现快速文件复制的方法
2015/03/14 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
基于Python对象引用、可变性和垃圾回收详解
2017/08/21 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
tensor和numpy的互相转换的实现示例
2019/08/02 Python
python使用celery实现异步任务执行的例子
2019/08/28 Python
python实现网站微信登录的示例代码
2019/09/18 Python
QML使用Python的函数过程解析
2019/09/26 Python
python读取tif图片时保留其16bit的编码格式实例
2020/01/13 Python
《青蛙看海》教学反思
2014/04/23 职场文书
辅导员评语
2014/05/04 职场文书
国旗下讲话演讲稿
2014/05/08 职场文书
养牛场项目建议书
2014/05/13 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server
Linux服务器离线安装 nginx的详细步骤
2022/06/16 Servers