📅  最后修改于: 2023-12-03 15:40:02.744000             🧑  作者: Mango
给定一个未排序的整数数组,找出其中可以形成的最小连续序列的数量。
例如,给定数组 [1,2,3,6,7,8,10,11],可以形成如下连续序列:[1,2,3] 和 [6,7,8] 和 [10,11],因此最小连续序列数量为 3。
我们可以通过以下步骤来解决这个问题:
以下为 Python 代码实现:
def find_min_continuous_sequence(nums):
nums.sort()
n = len(nums)
res = 0
i = 0
while i < n:
cur_len = 1
while i < n - 1 and nums[i] + 1 == nums[i + 1]:
cur_len += 1
i += 1
res += 1
i += 1
return res
以下为 Java 代码实现:
public int findMinContinuousSequence(int[] nums) {
Arrays.sort(nums);
int n = nums.length;
int res = 0;
int i = 0;
while(i < n) {
int curLen = 1;
while(i < n - 1 && nums[i] + 1 == nums[i + 1]) {
curLen++;
i++;
}
res++;
i++;
}
return res;
}
本题的解法比较简单,只需要对数组排序,然后遍历一遍数组,找到连续的数列并计算数列的长度即可。时间复杂度为 $O(nlogn)$,空间复杂度为 $O(1)$。