Python语言描述最大连续子序列和


Posted in Python onDecember 05, 2017

求最大连续子序列的和是一个很经典很古老的面试题了,记得在刚毕业找工作面试那会也遇到过同款问题。今儿突然想起来,正好快到毕业季,又该是苦逼的应届生们各种面试的时候到了,就给写了一些小代码解决这个问题。也希望各位找工作的同志们都拿到心目中理想的offer,从此以后,战胜高富帅,赢取白富美,走上人生巅峰。

1.问题描述

假设有一数组(python里为list啦)[1,3,-3,4,-6,-1],求数组中最大连续子序列的和。例如在此数组中,最大连续子序列的和为5,即1+3+(-3)+4 = 5

2.O(n2)的解法

最简单粗暴的方式,双层循环,用一个maxsum标识最大连续子序列和。然后每次判断更新。没有太多可以说的,直接上代码

def maxSum(list):
  maxsum = list[0]
  for i in range(len(list)):
    maxtmp = 0
    for j in range(i,len(list)):
      maxtmp += list[j]
      if maxtmp > maxsum:
        maxsum = maxtmp
  return maxsum
if __name__ == '__main__':
  list = [1,3,-3,4,-6]
  maxsum = maxSum(list)
  print "maxsum is",maxsum

运行结果

maxsum is 5

3.O(n)解法

在任何讲动态规范的地方都能找到求最大连续子序列和的例子。具体来说,假设数组为a[i],因为最大连续的子序列和必须是在位置0-(n-1)之间的某个位置结束。那么,当循环遍历到第i个位置时,如果其前面的连续子序列和小于等于0,那么以位置i结尾的最大连续子序列和就是第i个位置的值即a[i]。如果其前面的连续子序列和大于0,则以位置i结尾的最大连续子序列和为b[i] = max{ b[i-1]+a[i],a[i]},其中b[i]就是指最大连续子序列的和。

def maxSum(list_of_nums):
  maxsum = 0
  maxtmp = 0
  for i in range(len(list_of_nums)):
    if maxtmp <= 0:
      maxtmp = list_of_nums[i]
    else:
      maxtmp += list_of_nums[i]

    if(maxtmp > maxsum):
      maxsum = maxtmp
  return maxsum
if __name__ == '__main__':
  list_of_num = [1,3,-3,4,-6]
  maxsum = maxSum(list_of_num)
  print "maxsum is: ",maxsum

运行结果

maxsum is 5

总结

以上就是本文关于Python语言描述最大连续子序列和的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:

如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

Python 相关文章推荐
Python的Django REST框架中的序列化及请求和返回
Apr 11 Python
详解python脚本自动生成需要文件实例代码
Feb 04 Python
Python2和Python3中print的用法示例总结
Oct 25 Python
python实现读取大文件并逐行写入另外一个文件
Apr 19 Python
python爬取淘宝商品销量信息
Nov 16 Python
python用插值法绘制平滑曲线
Feb 19 Python
python将字符串转换成json的方法小结
Jul 09 Python
ML神器:sklearn的快速使用及入门
Jul 11 Python
python写入数据到csv或xlsx文件的3种方法
Aug 23 Python
利用PyQt中的QThread类实现多线程
Feb 18 Python
python输入中文的实例方法
Sep 14 Python
python 中 .py文件 转 .pyd文件的操作
Mar 04 Python
python matplotlib坐标轴设置的方法
Dec 05 #Python
详解K-means算法在Python中的实现
Dec 05 #Python
Python实现字符串匹配算法代码示例
Dec 05 #Python
Django实现简单分页功能的方法详解
Dec 05 #Python
Python生成8位随机字符串的方法分析
Dec 05 #Python
在Python程序员面试中被问的最多的10道题
Dec 05 #Python
Python对列表去重的多种方法(四种方法)
Dec 05 #Python
You might like
wordpress之wp-settings.php
2007/08/17 PHP
用javascript实现改变TEXTAREA滚动条和按钮的颜色,以及怎样让滚动条变得扁平
2007/04/20 Javascript
javascript 写类方式之七
2009/07/05 Javascript
firefox下对ajax的onreadystatechange的支持情况分析
2009/12/14 Javascript
一个收集图片的bookmarlet(js 刷新页面中的图片)
2010/05/27 Javascript
javascript变量作用域使用中常见错误总结
2013/03/26 Javascript
如何让你的Lightbox支持滚轮缩放及Base64图片
2014/12/04 Javascript
基于jquery实现图片上传本地预览功能
2016/01/08 Javascript
Node.js实现文件上传
2016/07/05 Javascript
bootstrap datetimepicker实现秒钟选择下拉框
2017/01/05 Javascript
jQuery实现鼠标滑过预览图片大图效果的方法
2017/04/26 jQuery
JavaScript中使用Async实现异步控制
2017/08/15 Javascript
Angular2+国际化方案(ngx-translate)的示例代码
2017/08/23 Javascript
微信小程序wx.request实现后台数据交互功能分析
2017/11/25 Javascript
angular写一个列表的选择全选交互组件的示例
2018/01/22 Javascript
Layui 设置select下拉框自动选中某项的方法
2018/08/14 Javascript
nodejs实现范围请求的实现代码
2018/10/12 NodeJs
nodejs中request库使用HTTPS代理的方法
2019/04/30 NodeJs
vue $mount 和 el的区别说明
2020/09/11 Javascript
[05:09]DOTA2-DPC中国联赛2月22日Recap集锦
2021/03/11 DOTA
基于Python实现对PDF文件的OCR识别
2016/08/05 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
python获取代码运行时间的实例代码
2018/06/11 Python
Python获取、格式化当前时间日期的方法
2020/02/10 Python
django-csrf使用和禁用方式
2020/03/13 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
css3 transform 3d 使用css3创建动态3d立方体(html5实践)
2013/01/06 HTML / CSS
HTML5中的websocket实现直播功能
2018/05/21 HTML / CSS
Myprotein中国网站:欧洲畅销运动营养品牌
2021/02/11 全球购物
银行介绍信范文
2014/01/10 职场文书
先进个人获奖感言
2014/01/24 职场文书
出国留学经济担保书
2014/04/01 职场文书
融资合作协议书范本
2014/10/17 职场文书
2014年底工作总结
2014/12/15 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
工伤调解协议书
2016/03/21 职场文书