20个不同长度数组同顺序对比取得与原数组都不重复的数字,如果有相邻相同的数字直接跳过
时间: 2024-03-17 14:42:54 浏览: 60
好的,让我来解答你的问题。
首先,我们可以将原数组中的所有数字存储到一个 Set 中,然后遍历每个长度为 k 的子数组,检查其中是否有重复数字。如果有,我们就将这个子数组中的所有数字从 Set 中删除,直到找到一个不包含重复数字的子数组。
具体实现可以按以下步骤进行:
1. 将原数组中的所有数字存储到一个 Set 中。
2. 遍历每个长度为 k 的子数组。
3. 对于每个子数组,检查其中是否有重复数字。如果有,则从 Set 中删除这些数字,直到找到一个不包含重复数字的子数组。
4. 将所有不包含重复数字的子数组合并到一个新的数组中。
下面是一个可能的实现(使用 Python 语言):
```
def get_unique_subarrays(arr, k):
unique_nums = set(arr)
result = []
i = 0
while i <= len(arr) - k:
subarr = arr[i:i+k]
if len(set(subarr)) == k:
result.extend(subarr)
i += k
else:
unique_nums -= set(subarr)
i += 1
result.extend(list(unique_nums)[:k-len(result)])
return result
```
注意,这个实现并没有检查相邻数字是否相同的情况。如果需要,可以在第 3 步中加入相邻数字重复的检查逻辑。
阅读全文