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中的作用域规则详解
Jan 30 Python
python设计模式大全
Jun 27 Python
Python实现代码统计工具(终极篇)
Jul 04 Python
python cx_Oracle模块的安装和使用详细介绍
Feb 13 Python
Python数据结构与算法之图的广度优先与深度优先搜索算法示例
Dec 14 Python
python的dataframe转换为多维矩阵的方法
Apr 11 Python
Python二进制串转换为通用字符串的方法
Jul 23 Python
手把手教你使用Python创建微信机器人
Apr 29 Python
python安装numpy和pandas的方法步骤
May 27 Python
Python实现简单的列表冒泡排序和反转列表操作示例
Jul 10 Python
如何使用python传入不确定个数参数
Feb 18 Python
Python Sqlalchemy如何实现select for update
Oct 12 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
星际争霸 Starcraft 发展史
2020/03/14 星际争霸
通过百度地图获取公交线路的站点坐标的js代码
2012/05/11 Javascript
基于IE下ul li 互相嵌套时的bug,排查,解决过程以及心得介绍
2013/05/07 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
原生Javascript封装的一个AJAX函数分享
2014/10/11 Javascript
jQuery中ready事件用法实例
2015/01/19 Javascript
js添加事件的通用方法推荐
2016/05/15 Javascript
JSON 对象未定义错误的解决方法
2016/09/29 Javascript
js通过classname来获取元素的方法
2016/11/24 Javascript
JavaScript严格模式详解
2017/01/16 Javascript
在javaScript中检测数据类型的几种方式小结
2017/03/04 Javascript
图解Javascript——作用域、作用域链、闭包
2017/03/21 Javascript
vue.js或js实现中文A-Z排序的方法
2018/03/08 Javascript
vue实现城市列表选择功能
2018/07/16 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
Vue 子组件与数据传递问题及注意事项
2019/07/11 Javascript
微信小程序动画组件使用解析,类似vue,且更强大
2019/08/01 Javascript
[01:03:42]VP vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
使用python调用浏览器并打开一个网址的例子
2014/06/05 Python
Python 正则表达式实现计算器功能
2017/04/29 Python
Python3中内置类型bytes和str用法及byte和string之间各种编码转换 问题
2018/09/27 Python
python实现websocket的客户端压力测试
2019/06/25 Python
Spring实战之使用util:命名空间简化配置操作示例
2019/12/09 Python
django 多数据库及分库实现方式
2020/04/01 Python
Python字符串三种格式化输出
2020/09/17 Python
python实现scrapy爬虫每天定时抓取数据的示例代码
2021/01/27 Python
python Protobuf定义消息类型知识点讲解
2021/03/02 Python
类如何去实现接口
2013/12/19 面试题
3.15国际消费者权益日主题活动活动总结
2014/03/16 职场文书
投标诚信承诺书
2014/05/26 职场文书
投标人廉洁自律承诺书
2014/05/26 职场文书
大学新闻系应届生求职信
2014/06/02 职场文书
2014年库房工作总结
2014/11/26 职场文书
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python
java objectUtils 使用可能会出现的问题
2022/02/28 Java/Android