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里隐藏的“禅”
Jun 16 Python
在Python中使用cookielib和urllib2配合PyQuery抓取网页信息
Apr 25 Python
在Python中处理字符串之isdigit()方法的使用
May 18 Python
python入门教程之识别验证码
Mar 04 Python
无法使用pip命令安装python第三方库的原因及解决方法
Jun 12 Python
python 自定义对象的打印方法
Jan 12 Python
java判断三位数的实例讲解
Jun 10 Python
对pyqt5中QTabWidget的相关操作详解
Jun 21 Python
python自带tkinter库实现棋盘覆盖图形界面
Jul 17 Python
python requests指定出口ip的例子
Jul 25 Python
Django 再谈一谈json序列化
Mar 16 Python
教你用python控制安卓手机
May 13 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
150kHz到30Mhz完全冲浪手册
2020/03/20 无线电
php empty() 检查一个变量是否为空
2011/11/10 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
smarty模板中拼接字符串的方法
2014/02/14 PHP
php结合js实现点击超链接执行删除确认操作
2014/10/31 PHP
PHP利用正则表达式将相对路径转成绝对路径的方法示例
2017/02/28 PHP
JQuery 前台切换网站的样式实现
2009/06/22 Javascript
javascript 函数调用规则
2009/08/26 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
2011/01/27 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
js如何实现点击标签文字,文字在文本框出现
2015/08/05 Javascript
JS 日期与时间戮相互转化的简单实例
2016/06/22 Javascript
AngularJS中过滤器的使用与自定义实例代码
2016/09/17 Javascript
简单的JS控制button颜色随点击更改的实现方法
2017/04/17 Javascript
前端构建工具之gulp的语法教程
2017/06/12 Javascript
基于canvas粒子系统的构建详解
2017/08/31 Javascript
微信小程序button组件使用详解
2018/01/31 Javascript
使用 vue.js 构建大型单页应用
2018/02/10 Javascript
Vue实现双向绑定的原理以及响应式数据的方法
2018/07/02 Javascript
js实现前面自动补全位数的方法
2018/10/10 Javascript
vue组件命名和props命名代码详解
2019/09/01 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
跟老齐学Python之模块的加载
2014/10/24 Python
Windows下实现Python2和Python3两个版共存的方法
2015/06/12 Python
Python tkinter实现的图片移动碰撞动画效果【附源码下载】
2018/01/04 Python
python3+selenium实现qq邮箱登陆并发送邮件功能
2019/01/23 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
Python实现一个优先级队列的方法
2020/07/31 Python
opencv+pyQt5实现图片阈值编辑器/寻色块阈值利器
2020/11/13 Python
Champion官网:美国冠军运动服装
2017/01/25 全球购物
上海期货面试题
2014/01/31 面试题
艺术爱好者的自我评价分享
2013/10/08 职场文书
印刷技术专业自荐信
2014/09/18 职场文书
导游词之杭州岳王庙
2019/11/13 职场文书
CSS的class与id常用的命名规则
2021/05/18 HTML / CSS
vue项目proxyTable配置和部署服务器
2022/04/14 Vue.js