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中用memcached来减少数据库查询次数的教程
Apr 07 Python
Django返回json数据用法示例
Sep 18 Python
Anaconda多环境多版本python配置操作方法
Sep 12 Python
django小技巧之html模板中调用对象属性或对象的方法
Nov 30 Python
pycharm打开命令行或Terminal的方法
Jan 16 Python
对python 自定义协议的方法详解
Feb 13 Python
详解用python自制微信机器人,定时发送天气预报
Mar 25 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
python 命令行传入参数实现解析
Aug 30 Python
python读文件的步骤
Oct 08 Python
使用Python 自动生成 Word 文档的教程
Feb 13 Python
基于OpenCV的路面质量检测的实现
Nov 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
PHP 常见郁闷问题答解
2006/11/25 PHP
php读取txt文件并将数据插入到数据库
2016/02/23 PHP
PHP实现动态获取函数参数的方法示例
2018/04/02 PHP
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
JQuery操作三大控件(下拉,单选,复选)的方法
2013/08/06 Javascript
jquery实现可关闭的倒计时广告特效代码
2015/09/02 Javascript
node.js require() 源码解读
2015/12/13 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
归纳下js面向对象的几种常见写法总结
2016/08/24 Javascript
Bootstrop实现多级下拉菜单功能
2016/11/24 Javascript
强大的 Angular 表单验证功能详细介绍
2017/05/23 Javascript
Vue项目使用CDN优化首屏加载问题
2018/04/01 Javascript
a标签调用js的方法总结
2019/09/05 Javascript
vue框架中props的typescript用法详解
2020/02/17 Javascript
Vue项目中使用flow做类型检测的方法
2020/03/18 Javascript
Javascript执行流程细节原理解析
2020/05/14 Javascript
python使用BeautifulSoup分析网页信息的方法
2015/04/04 Python
详解C++编程中一元运算符的重载
2016/01/19 Python
Python编写简单的HTML页面合并脚本
2016/07/11 Python
Python中使用支持向量机SVM实践
2017/12/27 Python
Python matplotlib的使用并自定义colormap的方法
2018/12/13 Python
python编写简单端口扫描器
2019/09/04 Python
Python装饰器原理与基本用法分析
2020/01/07 Python
Python输出指定字符串的方法
2020/02/06 Python
Python Selenium模块安装使用教程详解
2020/07/09 Python
如何用python爬取微博热搜数据并保存
2021/02/20 Python
日本著名的平价时尚女性购物网站:Fifth
2016/08/24 全球购物
美国值得信赖的婚恋交友网站:eHarmony
2018/10/04 全球购物
Tommy Hilfiger美国官网:美国高端休闲领导品牌
2019/01/14 全球购物
物流管理应届生求职信
2013/11/07 职场文书
遵纪守法演讲稿
2014/05/23 职场文书
自我介绍演讲稿范文
2014/08/21 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
我爱家乡演讲稿
2014/09/12 职场文书
学雷锋主题班会教案
2015/08/13 职场文书