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 相关文章推荐
用pickle存储Python的原生对象方法
Apr 28 Python
Python3简单实例计算同花的概率代码
Dec 06 Python
Python设计模式之代理模式简单示例
Jan 09 Python
python实现二叉查找树实例代码
Feb 08 Python
浅谈numpy生成数组的零值问题
Nov 12 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
详解使用python绘制混淆矩阵(confusion_matrix)
Jul 14 Python
Python中list的交、并、差集获取方法示例
Aug 01 Python
python3中sorted函数里cmp参数改变详解
Mar 12 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
Python QT组件库qtwidgets的使用
Nov 02 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中一些可以替代正则表达式函数的字符串操作函数
2014/11/17 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
Jsonp 跨域的原理以及Jquery的解决方案
2010/05/18 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
jQuery实现的多选框多级联动插件
2014/05/02 Javascript
Extjs grid panel自带滚动条失效的解决方法
2014/09/11 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
vue实现文字加密功能
2019/09/27 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
vue 组件开发原理与实现方法详解
2019/11/29 Javascript
python实现将pvr格式转换成pvr.ccz的方法
2015/04/28 Python
python编程线性回归代码示例
2017/12/07 Python
详谈pandas中agg函数和apply函数的区别
2018/04/20 Python
Python解析json代码实例解析
2019/11/25 Python
python 使用事件对象asyncio.Event来同步协程的操作
2020/05/04 Python
使用python画出逻辑斯蒂映射(logistic map)中的分叉图案例
2020/12/11 Python
马来西亚户外装备商店:PTT Outdoor
2019/07/13 全球购物
艺术爱好者的自我评价分享
2013/10/08 职场文书
一个大学生十年的职业规划
2014/01/17 职场文书
军校大学生个人的自我评价
2014/02/17 职场文书
亲子读书活动方案
2014/02/22 职场文书
单位工程竣工验收方案
2014/03/16 职场文书
初一新生军训方案
2014/05/22 职场文书
三方股份合作协议书
2014/10/13 职场文书
幼儿园感谢信
2015/01/21 职场文书
英文感谢信格式
2015/01/21 职场文书
统计工作个人总结
2015/03/03 职场文书
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
js实现自动锁屏功能
2021/06/02 Javascript
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫
Linux、ubuntu系统下查看显卡型号、显卡信息详解
2022/04/07 Servers
Android基础入门之dataBinding的简单使用教程
2022/06/21 Java/Android