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应用程序步骤及版本冲突问题解决
Nov 19 Python
Python中的rfind()方法使用详解
May 19 Python
Windows上配置Emacs来开发Python及用Python扩展Emacs
Nov 20 Python
Python如何快速上手? 快速掌握一门新语言的方法
Nov 14 Python
django 解决manage.py migrate无效的问题
May 27 Python
python 将列表中的字符串连接成一个长路径的方法
Oct 23 Python
解决python2 绘图title,xlabel,ylabel出现中文乱码的问题
Jan 29 Python
python使用正则来处理各种匹配问题
Dec 22 Python
jupyter notebook 重装教程
Apr 16 Python
详解Python IO编程
Jul 24 Python
Python编程根据字典列表相同键的值进行合并
Oct 05 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
php+ajax实现无刷新文件上传功能(ajaxuploadfile)
2018/02/11 PHP
php实现支付宝当面付(扫码支付)功能
2018/05/30 PHP
详解关于php的xdebug配置(编辑器vscode)
2019/01/29 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
PHP const定义常量及global定义全局常量实例解析
2020/05/28 PHP
javascript编程起步(第一课)
2007/01/10 Javascript
修改jQuery.Autocomplete插件 支持中文输入法 避免TAB、ENTER键失效、导致表单提交
2009/10/11 Javascript
jQuery EasyUI API 中文文档 - NumberBox数字框
2011/10/13 Javascript
iphone safari不支持position fixed的解决方法
2012/05/04 Javascript
JavaScript中的原型和继承详解(图文)
2014/07/18 Javascript
javascript实现iframe框架延时加载的方法
2014/10/30 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
js实现一键复制功能
2017/03/16 Javascript
JQuery实现图片轮播效果
2017/05/08 jQuery
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
mac上配置Android环境变量的方法
2018/07/08 Javascript
详解Vue、element-ui、axios实现省市区三级联动
2019/05/07 Javascript
微信小程序实现滚动加载更多的代码
2019/12/06 Javascript
Python学习笔记之os模块使用总结
2014/11/03 Python
python中的闭包用法实例详解
2015/05/05 Python
在python 不同时区之间的差值与转换方法
2019/01/14 Python
python drf各类组件的用法和作用
2021/01/12 Python
洛杉矶时尚女装系列:J.ING US
2019/03/17 全球购物
馥绿德雅美国官方网站:Rene Furterer头皮护理专家
2019/05/01 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
母亲追悼会答谢词
2014/01/27 职场文书
班班通项目实施方案
2014/02/25 职场文书
协议书范本
2014/04/23 职场文书
借款担保书范文
2014/05/13 职场文书
社区戒毒工作方案
2014/06/04 职场文书
节能环保标语
2014/06/12 职场文书
劳动模范获奖感言
2015/07/31 职场文书
2016高中社会实践心得体会范文
2016/01/14 职场文书
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python