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 相关文章推荐
django模型中的字段和model名显示为中文小技巧分享
Nov 18 Python
Python实现比较两个文件夹中代码变化的方法
Jul 10 Python
python UNIX_TIMESTAMP时间处理方法分析
Apr 18 Python
利用Anaconda完美解决Python 2与python 3的共存问题
May 25 Python
浅谈Python使用Bottle来提供一个简单的web服务
Dec 27 Python
python 从csv读数据到mysql的实例
Jun 21 Python
Python交互环境下实现输入代码
Jun 22 Python
用python写测试数据文件过程解析
Sep 25 Python
如何基于Python实现自动扫雷
Jan 06 Python
python多进程下的生产者和消费者模型
May 07 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
python opencv检测直线 cv2.HoughLinesP的实现
Jun 18 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 利用socket发送HTTP请求(GET,POST)
2015/08/24 PHP
php用户注册信息验证正则表达式
2015/11/12 PHP
PHP+AjaxForm异步带进度条上传文件实例代码
2017/08/14 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
jquery $.getJSON()跨域请求
2011/12/21 Javascript
浅析Js(Jquery)中,字符串与JSON格式互相转换的示例(直接运行实例)
2013/07/09 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
Javascript技术栈中的四种依赖注入详解
2016/02/23 Javascript
javascript实现抽奖程序的简单实例
2016/06/07 Javascript
ajax异步请求详解
2017/01/06 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
vue.js使用3DES加密的方法示例
2018/05/18 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
如何从零开始手写Koa2框架
2019/03/22 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
[45:52]完美世界DOTA2联赛PWL S3 Forest vs INK ICE 第二场 12.09
2020/12/12 DOTA
Python调用C/C++动态链接库的方法详解
2014/07/22 Python
Python实现分割文件及合并文件的方法
2015/07/10 Python
Mac中Python 3环境下安装scrapy的方法教程
2017/10/26 Python
Python中支持向量机SVM的使用方法详解
2017/12/26 Python
在Pycharm中修改文件默认打开方式的方法
2019/01/17 Python
简单了解python数组的基本操作
2019/11/26 Python
python 等差数列末项计算方式
2020/05/03 Python
Python浮点型(float)运算结果不正确的解决方案
2020/09/22 Python
CSS3属性box-sizing使用指南
2014/12/09 HTML / CSS
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
html5文本内容_动力节点Java学院整理
2017/07/11 HTML / CSS
Merrell迈乐澳大利亚网站:购买户外登山鞋
2017/05/28 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
2014年高考决心书
2014/03/11 职场文书
高中运动会广播稿
2014/09/16 职场文书
庆七一宣传标语
2014/10/08 职场文书
2014年工程部工作总结
2014/11/25 职场文书
2016年大学生党员承诺书
2016/03/24 职场文书
Win11怎么启动任务管理器?Win11启动任务管理器的几种方法
2021/11/23 数码科技