📅  最后修改于: 2023-12-03 15:26:11.067000             🧑  作者: Mango
给定一个未排序的整数数组,找出其中可以形成的最小连续序列的数目。
首先将数组排序,然后从左到右遍历数组,当遍历到一个数时,检查它是否与前一个数连续。如果是,则继续检查下一个数。如果不是,则说明当前数不能与之前的数构成连续序列,这时需要从当前数开始新建一个连续序列。
为了记录当前已经构建好的连续序列,我们可以用一个变量 count
来表示当前连续序列的长度,同时用一个变量 res
来记录已构建好的连续序列的个数。如果当前数比前一个数大 1,说明它可以放在当前连续序列的末尾,此时将 count
加一。如果不是,说明当前连续序列已经结束,需要将 count
和 res
分别重置为 1 和原来的值加一,表示新建了一个连续序列。
最后,返回 res
即可。
以下是 Python 的代码实现:
def find_min_subarray(nums):
nums.sort()
count, res = 1, 1
for i in range(1, len(nums)):
if nums[i] == nums[i-1] + 1:
count += 1
elif nums[i] == nums[i-1]:
continue
else:
count = 1
res += 1
return res
本题可以通过排序数组来简化解法。使用两个变量 count
和 res
分别记录当前连续序列的长度和已构建好的连续序列的个数。遍历数组时检查相邻的两个数是否连续,根据情况更新 count
和 res
。最后返回 res
即可。