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文件和目录操作方法大全(含实例)
Mar 12 Python
Python多进程通信Queue、Pipe、Value、Array实例
Nov 21 Python
Python里disconnect UDP套接字的方法
Apr 23 Python
Python中列表和元组的使用方法和区别详解
Dec 30 Python
Python调用ctypes使用C函数printf的方法
Aug 23 Python
几个适合python初学者的简单小程序,看完受益匪浅!(推荐)
Apr 16 Python
详解Python 定时框架 Apscheduler原理及安装过程
Jun 14 Python
Python正则表达式匹配数字和小数的方法
Jul 03 Python
python爬虫爬取幽默笑话网站
Oct 24 Python
python实现IOU计算案例
Apr 12 Python
Django用户登录与注册系统的实现示例
Jun 03 Python
python3美化表格数据输出结果的实现代码
Apr 14 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
MayFish PHP的MVC架构的开发框架
2009/08/13 PHP
php function用法如何递归及return和echo区别
2014/03/07 PHP
laravel框架查询数据集转为数组的两种方法
2019/10/10 PHP
JSDoc 介绍使用规范JsDoc的使用介绍
2011/02/12 Javascript
javascript浏览器兼容教程之事件处理
2014/06/09 Javascript
JS组件Bootstrap Table使用实例分享
2016/05/30 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
jQuery实现搜索页面关键字的功能
2017/02/16 Javascript
angularJS利用ng-repeat遍历二维数组的实例代码
2017/06/03 Javascript
微信小程序使用Socket的实例
2017/09/19 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
深入浅析Vue中的 computed 和 watch
2018/06/06 Javascript
VUE解决微信签名及SPA微信invalid signature问题(完美处理)
2019/03/29 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
原生JS实现顶部导航栏显示按钮+搜索框功能
2019/12/25 Javascript
JS实现鼠标移动拖尾
2020/12/27 Javascript
[06:25]第二届DOTA2亚洲邀请赛主赛事第二天比赛集锦.mp4
2017/04/03 DOTA
Python生成随机密码
2015/03/10 Python
Python设置Socket代理及实现远程摄像头控制的例子
2015/11/13 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
Python使用add_subplot与subplot画子图操作示例
2018/06/01 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
想学画画?python满足你!
2020/12/24 Python
CSS3 对过渡(transition)进行调速以及延时
2020/10/21 HTML / CSS
手机配件第一品牌:ZAGG
2017/05/28 全球购物
美国在线家居装饰店:Belle&June
2018/10/24 全球购物
亚洲最大的运动鞋寄售店:KicksCrew
2020/11/26 全球购物
艺术系大学生毕业个人自我评价
2013/09/19 职场文书
总经理助理工作职责
2014/02/06 职场文书
公司授权委托书范本
2014/04/03 职场文书
个人整改措施落实情况汇报
2014/10/29 职场文书
涉外离婚协议书怎么写
2014/11/20 职场文书
2015年党员承诺书
2015/01/21 职场文书
Java字符串逆序方法详情
2022/03/21 Java/Android
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技