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标准库之多进程(multiprocessing包)介绍
Nov 25 Python
Python解析json文件相关知识学习
Mar 01 Python
简单讲解Python中的字符串与字符串的输入输出
Mar 13 Python
Python+Selenium自动化实现分页(pagination)处理
Mar 31 Python
Python使用combinations实现排列组合的方法
Nov 13 Python
对json字符串与python字符串的不同之处详解
Dec 19 Python
python 实现在一张图中绘制一个小的子图方法
Jul 07 Python
python PyAutoGUI 模拟鼠标键盘操作和截屏功能
Aug 04 Python
TensorFlow车牌识别完整版代码(含车牌数据集)
Aug 05 Python
Python Socketserver实现FTP文件上传下载代码实例
Mar 27 Python
matplotlib 多个图像共用一个colorbar的实现示例
Sep 10 Python
python manim实现排序算法动画示例
Aug 14 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使用ob_start()实现图片存入变量的方法
2014/11/14 PHP
PHP截取IE浏览器并缩小原图的方法
2016/03/04 PHP
PHP编写文件多服务器同步程序
2016/07/02 PHP
PHP mkdir创建文件夹实现方法解析
2020/11/13 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
[原创]站长必须要知道的javascript广告代码
2007/05/30 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
2013/12/24 Javascript
jQuery实现Email邮箱地址自动补全功能代码
2015/11/03 Javascript
深入理解Node.js 事件循环和回调函数
2016/11/02 Javascript
Bootstrap表格使用方法详解
2017/02/17 Javascript
JavaScript瀑布流布局实现代码
2017/05/06 Javascript
React.js中常用的ES6写法总结(推荐)
2017/05/09 Javascript
详解webpack自动生成html页面
2017/06/29 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
微信小程序中悬浮窗功能的实现代码
2019/08/02 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
JS实现页面鼠标点击出现图片特效
2020/08/19 Javascript
vue中父子组件的参数传递和应用示例
2021/01/04 Vue.js
[54:26]完美世界DOTA2联赛PWL S3 Forest vs Rebirth 第一场 12.10
2020/12/12 DOTA
python 3.3 下载固定链接文件并保存的方法
2018/12/18 Python
python Selenium实现付费音乐批量下载的实现方法
2019/01/24 Python
Django中Middleware中的函数详解
2019/07/18 Python
python连接、操作mongodb数据库的方法实例详解
2019/09/11 Python
pytorch载入预训练模型后,实现训练指定层
2020/01/06 Python
python 安装教程之Pycharm安装及配置字体主题,换行,自动更新
2020/03/13 Python
Python socket连接中的粘包、精确传输问题实例分析
2020/03/24 Python
调整Jupyter notebook的启动目录操作
2020/04/10 Python
Yahoo-PHP面试题2
2014/12/06 面试题
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
业务总经理岗位职责
2014/02/03 职场文书
社会学专业学生职业规划书
2014/02/07 职场文书
中小学校园安全广播稿
2014/09/29 职场文书
北京英文导游词
2015/02/12 职场文书
2015-2016年小学教导工作总结
2015/07/21 职场文书
Python matplotlib安装以及实现简单曲线的绘制
2022/04/26 Python
新的CSS 伪类函数 :is() 和 :where()示例详解
2022/08/05 HTML / CSS