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根据出生年份简单计算生肖的方法
Mar 27 Python
Python3搜索及替换文件中文本的方法
May 22 Python
Python爬虫爬验证码实现功能详解
Apr 14 Python
Django小白教程之Django用户注册与登录
Apr 22 Python
python类的方法属性与方法属性的动态绑定代码详解
Dec 27 Python
Python使用matplotlib绘图无法显示中文问题的解决方法
Mar 14 Python
python调用百度语音识别api
Aug 30 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 Python
python base64库给用户名或密码加密的流程
Jan 02 Python
如何在django中添加日志功能
Feb 06 Python
python实现电子词典
Mar 03 Python
Python如何输出百分比
Jul 31 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
历史证明,懒惰才是推动科学发展技术进步的动力
2021/03/02 无线电
PHP 之Section与Cookie使用总结
2012/09/14 PHP
使用php测试硬盘写入速度示例
2014/01/27 PHP
javascript hashtable实现代码
2009/10/13 Javascript
JQuery扩展插件Validate—6 radio、checkbox、select的验证
2011/09/05 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
jquery实现的一个导航滚动效果具体代码
2013/05/27 Javascript
提高NodeJS中SSL服务的性能
2014/07/15 NodeJs
详解jQuery中的元素的属性和相关操作
2015/08/14 Javascript
jquery.mousewheel实现整屏翻屏效果
2015/08/30 Javascript
java必学必会之static关键字
2015/12/03 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
js实现纯前端的图片预览
2016/04/27 Javascript
easyUI实现(alert)提示框自动关闭的实例代码
2016/11/07 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
nodeJs的安装与npm全局环境变量的配置详解
2020/01/06 NodeJs
[04:59]DOTA2-DPC中国联赛 正赛 Ehome vs iG 选手采访
2021/03/11 DOTA
Python中的defaultdict与__missing__()使用介绍
2018/02/03 Python
浅谈Python中的作用域规则和闭包
2018/03/20 Python
Pandas:DataFrame对象的基础操作方法
2018/06/07 Python
python利用JMeter测试Tornado的多线程
2020/01/12 Python
在pycharm中debug 实时查看数据操作(交互式)
2020/06/09 Python
对python pandas中 inplace 参数的理解
2020/06/27 Python
python如何快速生成时间戳
2020/07/21 Python
python基于爬虫+django,打造个性化API接口
2021/01/21 Python
html5应用缓存_动力节点Java学院整理
2017/07/13 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
Old Navy加拿大官网:美式休闲服饰品牌
2017/09/26 全球购物
时尚孕妇装:Ingrid & Isabel
2019/05/08 全球购物
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
商务助理求职信范文
2014/04/20 职场文书
写求职信有哪些注意事项
2014/05/08 职场文书
群众路线表态发言材料
2014/10/17 职场文书
售票员岗位职责
2015/02/15 职场文书
html+css 实现简易导航栏功能
2021/04/07 HTML / CSS
js不常见操作运算符总结
2021/11/20 Javascript