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实现将罗马数字转换成普通阿拉伯数字的方法
Apr 19 Python
python在ubuntu中的几种安装方法(小结)
Dec 08 Python
Django 登陆验证码和中间件的实现
Aug 17 Python
解决pycharm remote deployment 配置的问题
Jun 27 Python
python把转列表为集合的方法
Jun 28 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
Jul 01 Python
python变量命名的7条建议
Jul 04 Python
python3通过udp实现组播数据的发送和接收操作
May 05 Python
Python爬虫爬取博客实现可视化过程解析
Jun 29 Python
next在python中返回迭代器的实例方法
Dec 15 Python
python实现计算器简易版
Dec 17 Python
python中取整数的几种方法
Nov 07 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 sprintf()函数用例解析
2011/05/18 PHP
ajax+php控制所有后台函数调用
2015/07/15 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
跨浏览器开发经验总结(四) 怎么写入剪贴板
2010/05/13 Javascript
jquery 图片缩放拖动的简单实例
2014/01/08 Javascript
IE下通过a实现location.href 获取referer的值
2014/09/04 Javascript
使用javascript获取页面名称
2014/12/23 Javascript
javascript实时获取鼠标坐标值并显示的方法
2015/04/30 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
AngularJS教程之简单应用程序示例
2016/08/16 Javascript
JS防止网页被嵌入iframe框架的方法分析
2016/09/13 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
TypeScript入门-基本数据类型
2017/03/28 Javascript
JSON生成Form表单的方法示例
2018/11/21 Javascript
jquery实现二级导航下拉菜单效果实例
2019/05/14 jQuery
python多进程操作实例
2014/11/21 Python
由Python运算π的值深入Python中科学计算的实现
2015/04/17 Python
基于Python的接口测试框架实例
2016/11/04 Python
Python使用微信SDK实现的微信支付功能示例
2017/06/30 Python
django站点管理详解
2017/12/12 Python
django如何连接已存在数据的数据库
2018/08/14 Python
Python面向对象之类和对象属性的增删改查操作示例
2018/12/14 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
解决jupyter notebook显示不全出现框框或者乱码问题
2020/04/09 Python
谈谈对css属性box-sizing的了解
2017/01/04 HTML / CSS
苹果香港官方商城:Apple香港
2016/09/14 全球购物
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
学生个人自我鉴定范文
2014/03/28 职场文书
家长对老师的评语
2014/04/18 职场文书
物业保安岗位职责
2014/07/02 职场文书
2014年学校后勤工作总结
2014/12/06 职场文书
2014年政务公开工作总结
2014/12/09 职场文书
MySQL创建管理HASH分区
2022/04/13 MySQL