码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-10-11 12:45:38      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:大连   style   ext   code   name   长度   最大连续   lambda   def   

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

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

我的解法,如下:

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)

 

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

标签:大连   style   ext   code   name   长度   最大连续   lambda   def   

原文地址:http://www.cnblogs.com/LanTianYou/p/7649684.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!