判断是否在数组中_检查数组中的数字是否连续,你还有其他方案?

aa5b7db64c457e18041d03339d2a3e2c.png

简述

给定一个未排序的数字数组,编写一个函数,如果该数组包含连续的数字,则该函数返回true。

* a)如果array为{5,2,3,1,4},则该函数应返回true,因为该数组具有从1到5的连续数字。

* b)如果数组是{83,78,80,81,79,82},则该函数应返回true,因为数组具有从78到83的连续数字。

* c)如果数组为{34,23,52,12,3},则该函数应返回false,因为元素不连续。

### 排序方式

通过排序后,校验数据之间相差是否是1。

def are_consecutive_sort(numbers):    list.sort(numbers)    for n in range(0, len(numbers) - 1):        if numbers[n] + 1 != numbers[n + 1]:            return False    return True

时间复杂度 O(nLogn)(线性对数) 空间复杂度 O(n)

使用列表访问方式

1.判断数据中最大值,最小值,统计数据的个数。

2.使用列表判断重复数据。

def are_consecutive_visited_array(numbers):    Min = min(numbers)    Max = max(numbers)    if Max - Min != len(numbers) - 1:        return False    visited = []    for i in range(0, len(numbers) - 1):        if i in visited:            return False        visited.append(i)    return True

时间复杂度 O(n) 线性 空间复杂度 O(n)

总结

上面两种方案,显然是第二种方式,属于更加优秀的解决方案。你还有其它方式没?

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页