函数main()接收一个包含若干整数的列表1st,要求判断列表中是否存在重复的整数。如果 列表中所有整数完全一样则返回整数e,如果列表中的所有整数互不相同则返回整数1,如果列表中有部分整数相同则返回整数2。
时间: 2024-02-22 12:59:14 浏览: 15
您好!针对您的问题,我可以给出以下C++代码实现:
```c++
#include <iostream>
#include <unordered_set>
#include <vector>
int checkDuplicates(std::vector<int> 1st) {
int n = 1st.size();
std::unordered_set<int> set;
for (int i = 0; i < n; i++) {
set.insert(1st[i]);
}
if (set.size() == 1) {
return 1st[0]; // 所有数一样,返回其中任意一个即可
} else if (set.size() == n) {
return 1; // 所有数都不一样,返回1
} else {
return 2; // 有部分数相同,返回2
}
}
int main() {
std::vector<int> 1st = {1, 2, 3, 4, 5, 6, 7};
int res = checkDuplicates(1st);
std::cout << res << std::endl; // 输出1
std::vector<int> 2nd = {1, 2, 3, 4, 5, 6, 6};
res = checkDuplicates(2nd);
std::cout << res << std::endl; // 输出2
std::vector<int> 3rd = {1, 1, 1, 1, 1, 1, 1};
res = checkDuplicates(3rd);
std::cout << res << std::endl; // 输出1
return 0;
}
```
其中,使用 `std::unordered_set` 来实现对列表中元素的去重。如果列表中所有整数完全一样,则集合中只有一个元素;如果列表中的所有整数互不相同,则集合中有 n 个元素;如果列表中有部分整数相同,则集合中元素数在 1 和 n 之间。根据集合元素数的不同,即可判断列表中的整数是否存在重复。