博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python版求数组的最大连续区间
阅读量:6241 次
发布时间:2019-06-22

本文共 1091 字,大约阅读时间需要 3 分钟。

[本文出自天外归云的博客园]

题目:有一个数组,求他的最大(最长)连续区间(数字是连续的区间)。

我的解法,如下:

class Finder(object):    '''        判断两个相邻的数字是否连续,若连续:            1.继续向后判断            2.记录连续长度        最后返回最大连续长度    '''        def find_continuity(self,index,array,length=1):        if index+1 < len(array):            _curr = array[index]            _next = array[index+1]            if abs(_next-_curr) == 1:                length += 1                length = self.find_continuity(index+1,array,length)        return length    '''        将每个数字开头的索引值及最大连续区间长度存入字典        找出字典中最大的键值即最大连续区间        根据最大连续区间的索引和长度返回对应的数组切片    '''    def find_longest(self,array):        continuity = dict()        for i in range(len(array)):            length = self.find_continuity(i,array)            continuity[i] = length        longest = max(continuity.items(), key=lambda x: x[1])        index,length = longest[0],longest[1]        return array[index:index+length]if __name__ == '__main__':    array = [1,2,3,4,5,4,2,5,3,4,7,1,5,9,10,9,8,7,6,5,4,3,4,5,6,8]    finder = Finder()    longest_array = finder.find_longest(array)    print(longest_array)

 

转载地址:http://tscia.baihongyu.com/

你可能感兴趣的文章
【转】C51中断函数的写法
查看>>
django无法加载admin的静态内容的问题(Centos7+Nginx+uwsgi环境下)
查看>>
windows 2008 启用.NET Framework 3.5
查看>>
Linux -- Ubuntu搭建java开发环境
查看>>
MVC视图中Html常见的辅助方法
查看>>
分享一下刚刚HP电话面试。。。。。。。。我估计我挂了,不过还是要来分享一下...
查看>>
PT 转 PX
查看>>
平凡世界里的万千思绪
查看>>
(二)java环境搭建
查看>>
深入推荐引擎相关算法 - 协同过滤2
查看>>
mybatis逆向工程之配置
查看>>
使用.NET 4.0+ 操作64位系统中的注册表
查看>>
剑指offer——面试题26:判断二叉树B是否为二叉树A的子结构
查看>>
scrapy主动退出爬虫的代码片段
查看>>
ny12 喷水装置(二)
查看>>
C\C++语言细节(2)
查看>>
Jenkins持续部署-自动生成版本号
查看>>
设计模式--代理模式
查看>>
javascript基础知识--最基础的
查看>>
[转] vue自定义组件(通过Vue.use()来使用)即install的使用
查看>>