📅  最后修改于: 2023-12-03 14:55:46.405000             🧑  作者: Mango
为了检查所有子数组是否至少包含一个唯一元素,我们需要遍历每个子数组,并检查该子数组中是否有重复的元素。如果有重复元素,则该子数组不符合条件。
def check_unique_subarrays(arr):
"""
检查所有子数组是否至少包含一个唯一元素
Args:
arr: List[int],待检查数组。
Returns:
bool,所有子数组是否至少包含一个唯一元素。
"""
n = len(arr)
count = 0
for i in range(n):
for j in range(i+1, n+1):
sub_arr = arr[i:j]
if len(set(sub_arr)) == len(sub_arr):
count += 1
return count == (n*(n+1))//2
# 测试
arr = [1, 2, 3, 4]
print(check_unique_subarrays(arr)) # True
arr = [1, 2, 2, 4]
print(check_unique_subarrays(arr)) # False
该算法的时间复杂度为O(n^3),其中n为待检查数组的长度。在最坏情况下,需要遍历所有的子数组,并检查每个子数组是否包含重复元素。在空间复杂度方面,我们使用了一个set数据结构来存储子数组中的元素,其空间复杂度为O(n)。