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 SSH模块登录,远程机执行shell命令实例解析
Jan 12 Python
详解tensorflow载入数据的三种方式
Apr 24 Python
Python数据分析:手把手教你用Pandas生成可视化图表的教程
Dec 15 Python
详解Python3序列赋值、序列解包
May 14 Python
Django ORM 常用字段与不常用字段汇总
Aug 09 Python
Python Subprocess模块原理及实例
Aug 26 Python
python同步两个文件夹下的内容
Aug 29 Python
python 魔法函数实例及解析
Sep 25 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
Sep 16 Python
python对输出的奇数偶数排序实例代码
Dec 04 Python
5 分钟读懂Python 中的 Hook 钩子函数
Dec 09 Python
使用Python下载抖音各大V视频的思路详解
Feb 06 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
ezSQL PHP数据库操作类库
2010/05/16 PHP
一道关于php变量引用的面试题
2010/08/08 PHP
PHP引用(&amp;)各种使用方法实例详解
2014/03/20 PHP
PHP将Excel导入数据库及数据库数据导出至Excel的方法
2015/06/24 PHP
php文件管理基本功能简单操作
2017/01/16 PHP
js Date自定义函数 延迟脚本执行
2010/03/10 Javascript
js+xml生成级联下拉框代码
2012/07/24 Javascript
jquery实现图片按比例缩放示例
2014/07/01 Javascript
jQuery如何获取动态添加的元素
2016/06/24 Javascript
JS中位置与大小的获取方法
2016/11/22 Javascript
利用js获取下拉框中所选的值
2016/12/01 Javascript
JAVA面试题 static关键字详解
2019/07/16 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
[01:21]辉夜杯战队访谈宣传片—CDEC
2015/12/25 DOTA
Python使用正则表达式过滤或替换HTML标签的方法详解
2017/09/25 Python
python装饰器常见使用方法分析
2019/06/26 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
python 自定义装饰器实例详解
2019/07/20 Python
Python中最好用的命令行参数解析工具(argparse)
2019/08/23 Python
python构建指数平滑预测模型示例
2019/11/21 Python
利用Tensorflow构建和训练自己的CNN来做简单的验证码识别方式
2020/01/20 Python
python获取时间戳的实现示例(10位和13位)
2020/09/23 Python
记一次python 爬虫爬取深圳租房信息的过程及遇到的问题
2020/11/24 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
台湾三立电视电商平台:电电购
2019/09/09 全球购物
经典c++面试题二
2015/08/14 面试题
老公给老婆的道歉信
2014/01/10 职场文书
高中政治教学反思
2014/01/18 职场文书
汉语言文学专业自荐信
2014/06/11 职场文书
2014副局长群众路线对照检查材料思想汇报
2014/09/22 职场文书
自愿离婚协议书范文2014
2014/10/12 职场文书
党的群众路线教育实践活动个人整改措施
2014/10/27 职场文书
小王子读书笔记
2015/06/29 职场文书
掌握这项技巧,一年阅读300本书不是梦
2019/09/12 职场文书