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使用paramiko模块实现ssh远程登陆上传文件并执行
Jan 27 Python
在Python的Tornado框架中实现简单的在线代理的教程
May 02 Python
在Python中操作字符串之replace()方法的使用
May 19 Python
在CentOS上配置Nginx+Gunicorn+Python+Flask环境的教程
Jun 07 Python
让python 3支持mysqldb的解决方法
Feb 14 Python
windows环境下tensorflow安装过程详解
Mar 30 Python
Python操作mongodb数据库进行模糊查询操作示例
Jun 09 Python
python range()函数取反序遍历sequence的方法
Jun 25 Python
python多线程http压力测试脚本
Jun 25 Python
Python根据URL地址下载文件并保存至对应目录的实现
Nov 15 Python
Python函数调用追踪实现代码
Nov 27 Python
Python中的流程控制详解
Feb 18 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
探讨PHP删除文件夹的三种方法
2013/06/09 PHP
PHP模板引擎Smarty的缓存使用总结
2014/04/24 PHP
新页面打开实际尺寸的图片
2006/08/25 Javascript
javascript concat数组累加 示例
2009/09/03 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
js onclick事件传参讲解
2013/11/06 Javascript
用队列模拟jquery的动画算法实例
2015/01/20 Javascript
简化版手机端照片预览组件
2015/04/13 Javascript
jquery简单实现外部链接用新窗口打开的方法
2015/05/30 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
2016/08/02 Javascript
AngularJS轻松实现双击排序的功能
2016/08/30 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
如何实现星星评价(jquery.raty.js插件)
2016/12/21 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
详解Angular-cli生成组件修改css成less或sass的实例
2017/07/27 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
2017/08/14 Javascript
jQuery图片查看插件Magnify开发详解
2017/12/25 jQuery
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
微信公众号平台接口开发 菜单管理的实现
2019/08/14 Javascript
在微信小程序中使用mqtt服务的方法
2019/12/13 Javascript
Python中使用PDB库调试程序
2015/04/05 Python
详解Python中的Descriptor描述符类
2016/06/14 Python
使用Python的Tornado框架实现一个Web端图书展示页面
2016/07/11 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
Pycharm如何运行.py文件的方法步骤
2020/03/03 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
HTML5应用之文件上传
2016/12/30 HTML / CSS
详解h5页面在不同ios设备上的问题总结
2019/03/01 HTML / CSS
澳大利亚时尚前卫设计师珠宝在线:Amber Sceats
2017/10/04 全球购物
打造高效课堂实施方案
2014/03/22 职场文书
开学典礼策划方案
2014/05/28 职场文书
基层党员群众路线整改措施及努力方向
2014/10/28 职场文书
介绍信模板
2015/01/31 职场文书
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python