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中字符串的格式化方法小结
May 03 Python
python爬虫入门教程--优雅的HTTP库requests(二)
May 25 Python
django DRF图片路径问题的解决方法
Sep 10 Python
在pycharm上mongodb配置及可视化设置方法
Nov 30 Python
Python获取数据库数据并保存在excel表格中的方法
Jun 12 Python
Python的Tkinter点击按钮触发事件的例子
Jul 19 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
python3 实现爬取TOP500的音乐信息并存储到mongoDB数据库中
Aug 24 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
Aug 24 Python
浅析Python 字符编码与文件处理
Sep 24 Python
pandas中DataFrame重置索引的几种方法
May 24 Python
Python批量解压&压缩文件夹的示例代码
Apr 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
PHP __autoload函数(自动载入类文件)的使用方法
2012/02/04 PHP
PHP实现视频文件上传完整实例
2014/08/28 PHP
Zend Framework入门教程之Zend_Mail用法示例
2016/12/08 PHP
php计算多个集合的笛卡尔积实例详解
2017/02/16 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
使用PHP开发留言板功能
2019/11/19 PHP
javascript 用原型继承来实现对象系统
2010/03/22 Javascript
js 获取(接收)地址栏参数值的方法
2013/04/01 Javascript
JavaScript新窗口与子窗口传值详解
2014/02/11 Javascript
Javascript基础教程之数组 array
2015/01/18 Javascript
Vuejs第十三篇之组件——杂项
2016/09/09 Javascript
使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
2017/03/15 Javascript
js实现一个简单的数字时钟效果
2017/03/29 Javascript
echart简介_动力节点Java学院整理
2017/08/11 Javascript
JavaScript实现的反序列化json字符串操作示例
2018/07/18 Javascript
微信小程序项目实践之主页tab选项实现
2018/07/18 Javascript
深入学习js函数的隐式参数 arguments 和 this
2019/06/24 Javascript
简单谈谈javascript高级特性
2019/09/04 Javascript
[01:26]神话结束了,却也刚刚开始——DOTA2新英雄玛尔斯驾临战场
2019/03/10 DOTA
Python计算三维矢量幅度的方法
2015/06/15 Python
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
Django内容增加富文本功能的实例
2017/10/17 Python
python去掉空白行的多种实现代码
2018/03/19 Python
对python3中, print横向输出的方法详解
2019/01/28 Python
Python实现连接MySql数据库及增删改查操作详解
2019/04/16 Python
Python面向对象总结及类与正则表达式详解
2019/04/18 Python
Python实现个人微信号自动监控告警的示例
2019/07/03 Python
python实现按键精灵找色点击功能教程,使用pywin32和Pillow库
2020/06/04 Python
Python常用base64 md5 aes des crc32加密解密方法汇总
2020/11/06 Python
CSS3的RGBA中关于整数和百分比值的转换
2015/08/04 HTML / CSS
英国花园药房: The Garden Pharmacy
2017/12/28 全球购物
拉夫劳伦爱尔兰官方网站:Ralph Lauren爱尔兰
2020/04/10 全球购物
安全协议书
2014/04/23 职场文书
大学生应聘求职信
2014/05/26 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
vue使用echarts实现折线图
2022/03/21 Vue.js