📅  最后修改于: 2023-12-03 14:55:37.251000             🧑  作者: Mango
当我们需要在一个给定的数组中查询指定的范围是否存在非重复元素时,我们可以通过以下的算法来实现。
hashMap
,用来存储每个元素出现的次数。[L, R]
,每遇到一个元素,就将其在哈希表中的对应值加1。def check_duplicate(arr, L, R):
hashMap = {}
for i in range(L, R+1):
if arr[i] not in hashMap:
hashMap[arr[i]] = 1
else:
hashMap[arr[i]] += 1
if hashMap[arr[i]] > 1:
return False
return True
arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
print(check_duplicate(arr, 2, 5)) # True
arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
print(check_duplicate(arr, 2, 6)) # False
以上代码片段可以在 markdown 中以代码块的形式插入,示例如下:
def check_duplicate(arr, L, R):
hashMap = {}
for i in range(L, R+1):
if arr[i] not in hashMap:
hashMap[arr[i]] = 1
else:
hashMap[arr[i]] += 1
if hashMap[arr[i]] > 1:
return False
return True
测试结果也可以以代码块的形式插入markdown中,示例如下:
arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
print(check_duplicate(arr, 2, 5)) # True
arr = [1, 2, 3, 4, 5, 1, 2, 3, 4, 5]
print(check_duplicate(arr, 2, 6)) # False
以上算法实现简单,时间复杂度为 O(n),除了使用哈希表,我们也可以使用双指针对指定范围进行遍历,但相对来说代码会更加冗长。在实际的工作中,应根据数据规模和特点选择合适的算法来解决问题。