给我出一道考研数据结构的题
时间: 2023-05-20 14:03:44 浏览: 137
数据结构考研题
以下是一道考研数据结构的题目:
已知一个长度为 n 的数组 A,其中每个元素的值都在 [1, n] 的范围内。请问是否存在重复元素?如果存在,返回 true;否则,返回 false。
解题思路:
可以使用哈希表或者排序的方法来解决这个问题。使用哈希表的话,可以遍历数组 A,将每个元素的值作为哈希表的键,如果该键已经存在,则说明存在重复元素;否则,将该键加入哈希表中。时间复杂度为 O(n)。
如果使用排序的方法,可以先将数组 A 排序,然后遍历数组,判断相邻的元素是否相等。时间复杂度为 O(nlogn)。
代码示例:
使用哈希表的方法:
bool containsDuplicate(vector<int>& nums) {
unordered_set<int> s;
for (int i = 0; i < nums.size(); i++) {
if (s.count(nums[i])) {
return true;
}
s.insert(nums[i]);
}
return false;
}
使用排序的方法:
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
for (int i = 1; i < nums.size(); i++) {
if (nums[i] == nums[i-1]) {
return true;
}
}
return false;
}
阅读全文