存在重复元素
解法一:使用老师上课说的排序,然后遍历。使用快速排序时间复杂度是O(nlogn)(这个是快排的时间复杂度)+O(n)(遍历的时间复杂度)=======O(nlogn)
#include <bits/stdc++.h>
using namespace std;
bool containsDuplicate(vector<int> &nums) {
sort(nums.begin(), nums.end());
for (int i = 0; i < nums.size(); i++) {
if (nums[i + 1] == nums[i]) {
return true; } }
return false;
}
int main() {
int n;cin >> n;vector<int>nums;
for (int i = 0; i < n; i++) {
int x; cin >> x; nums.push_back(x); }
if (containsDuplicate(nums)) cout << "true";
else cout << "false";
return 0;
}
解法二:
使用数据结构set,set是集合,然后不能有重复的元素的一种数据结构
因此流程就是在最开始向set里添加元素的时候就直接可以看到是否有重复元素。
因为set.insert(x)插入的返回值,其第一个first的值是插入的x,其第二个值second是这个x是否插入的代表值,1代表插入成功,0代表插入失败。也就是0代表有重复元素。
#include <bits/stdc++.h>
using namespace std;
bool containsDuplicate(vector<int> &nums) {
set<int> se;
for (auto item : nums) {
if (!se.insert(item).second) { // 检查插入是否成功
return true; } }
return false;
}
int main() {
int n;cin >> n;vector<int>nums;
for (int i = 0; i < n; i++) {
int x;cin >> x;nums.push_back(x); }
if (containsDuplicate(nums))
cout << "true";
else
cout << "false";
return 0;
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理