📅  最后修改于: 2023-12-03 15:10:47.727000             🧑  作者: Mango
有时候我们需要检查数组中指定范围内是否存在非重复元素。这个问题可以通过以下方式解决:
Set<Integer> set = new HashSet<>();
for (int i = L; i <= R; i++) {
if (set.contains(array[i])) {
return true;
}
set.add(array[i]);
}
return false;
上述代码中,我们用for循环遍历指定范围内的元素。使用set.contains()方法检查元素是否存在于Set中,如果不存在则将其添加至Set中。若存在重复元素,则返回true。如果遍历完指定范围内的元素后没有发现重复元素,则返回false。
Arrays.sort(array, L, R+1);
for (int i = L+1; i <= R; i++) {
if (array[i] == array[i-1]) {
return true;
}
}
return false;
上述代码中,我们使用Arrays.sort()方法对数组L到R范围内的元素进行排序。然后,我们检查相邻元素是否相等,如果存在相邻元素相等的情况,则说明存在重复元素。
以上两个方法可以有效的检查数组范围内是否存在非重复元素。使用Set进行检查的方法更加简单,但是需要额外的空间。使用数组排序的方法则空间复杂度低,但是时间复杂度略高。最终选择哪种方法应该取决于具体应用场景的要求。