Python版求数组的最大连续区间

简介: [本文出自天外归云的博客园] 题目:有一个数组,求他的最大(最长)连续区间(数字是连续的区间)。 我的解法,如下: class Finder(object): ''' 判断两个相邻的数字是否连续,若连续: 1.

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

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

我的解法,如下:

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)

 

相关文章
|
2月前
|
存储 Python
一文掌握python数组字典dict()的全部用法(零基础学python(三))
一文掌握python数组字典dict()的全部用法(零基础学python(三))
60 0
|
1月前
|
算法 索引 Python
Python3实现旋转数组的3种算法
Python3实现旋转数组的3种算法
21 0
|
2月前
|
存储 索引 Python
一文掌握python数组numpy的全部用法(零基础学python(二))
一文掌握python数组numpy的全部用法(零基础学python(二))
29 0
|
1天前
|
Shell Python
python|闲谈2048小游戏和数组的旋转及翻转和转置
python|闲谈2048小游戏和数组的旋转及翻转和转置
15 1
|
11天前
|
存储 安全 数据处理
python如何将数据写到数组里
【4月更文挑战第12天】
|
2月前
|
存储 数据挖掘 C语言
Python数组与列表的区别
Python数组与列表的区别
|
2月前
|
C++ 索引 Python
Python Numpy入门基础(二)数组操作
Python Numpy入门基础(二)数组操作
25 0
|
3月前
|
存储 大数据 索引
【Python】NumPy数组和矢量计算
【1月更文挑战第26天】【Python】NumPy数组和矢量计算
|
3月前
|
算法 C++ 机器人
力扣 C++|一题多解之动态规划专题(1)
力扣 C++|一题多解之动态规划专题(1)
41 0
力扣 C++|一题多解之动态规划专题(1)
|
3月前
|
C++ Python 索引
Python Numpy入门基础(二)数组操作
Python Numpy入门基础(二)数组操作
29 0
Python Numpy入门基础(二)数组操作

热门文章

最新文章