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 相关文章推荐
Centos5.x下升级python到python2.7版本教程
Feb 14 Python
python用来获得图片exif信息的库实例分析
Mar 16 Python
在Apache服务器上同时运行多个Django程序的方法
Jul 22 Python
pandas中去除指定字符的实例
May 18 Python
python绘制评估优化算法性能的测试函数
Jun 25 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
Python正则表达式学习小例子
Mar 03 Python
Python实现CAN报文转换工具教程
May 05 Python
python代码能做成软件吗
Jul 24 Python
简述python&amp;pytorch 随机种子的实现
Oct 07 Python
pandas提升计算效率的一些方法汇总
May 30 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代码收集表单内容并写入文件的代码
2012/01/29 PHP
基于HBase Thrift接口的一些使用问题及相关注意事项的详解
2013/06/03 PHP
基于php-fpm 参数的深入理解
2013/06/03 PHP
iOS10推送通知开发教程
2016/09/19 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
Gird组件 Part-3:范例RSSFeed Viewer
2007/03/10 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
jQuery焦点图切换特效插件封装实例
2013/08/18 Javascript
CSS3实现动态背景登录框的代码
2015/07/28 Javascript
AngularJS深入探讨scope,继承结构,事件系统和生命周期
2016/11/02 Javascript
jQuery Validate 无法验证 chosen-select元素的解决方法
2017/05/17 jQuery
Angular 4依赖注入学习教程之InjectToken的使用(八)
2017/06/04 Javascript
bootstrap多层模态框滚动条消失的问题
2017/07/21 Javascript
AngularJS service之select下拉菜单效果
2017/07/28 Javascript
QQ跳转支付宝并自动领红包脚本(最新)
2018/06/22 Javascript
如何基于vue-cli3.0构建功能完善的移动端架子
2019/04/24 Javascript
javascript设计模式 ? 迭代器模式原理与用法实例分析
2020/04/17 Javascript
jQuery三组基本动画与自定义动画操作实例总结
2020/05/09 jQuery
使用webpack5从0到1搭建一个react项目的实现步骤
2020/12/16 Javascript
Python使用正则匹配实现抓图代码分享
2015/04/02 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
在windows下快速搭建web.py开发框架方法
2016/04/22 Python
Python3内置模块random随机方法小结
2019/07/13 Python
python内置模块collections知识点总结
2019/12/19 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
销售主管岗位职责
2014/02/08 职场文书
放飞中国梦演讲稿
2014/04/23 职场文书
中学生纪念九一八事变演讲稿
2014/09/14 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
白鹤梁导游词
2015/02/06 职场文书
拾金不昧表扬信怎么写
2015/05/04 职场文书
鸦片战争观后感
2015/06/09 职场文书
公司业务员管理制度
2015/08/05 职场文书
2019个人半年工作总结
2019/06/21 职场文书
Redis IP地址的绑定的实现
2021/05/08 Redis
MongoDB误操作后使用oplog恢复数据
2022/04/11 MongoDB