C++求数组是否含有重复元素
本文介绍了C++求数组是否含有重复元素的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
今天用leetcode
刷题,求数组是否含有重复元素。
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
for (int i = 0; i < nums.size() - 1; i++) {
cout << nums.size() << endl;
if (nums[i] == nums[i + 1])
return true;
}
return false;
}
int main() {
vector<int> a;
cout << containsDuplicate(a) << endl;
return 0;
}
用一个空vector
调用函数时
cout << nums.size() << endl;
这一行会执行,并在
if (nums[i] == nums[i + 1])
报错。
因该是用空vector
调用函数时不会进入for
循环才对,不知道这是为什么,求高手解答!
解决方案
#include <algorithm>
#include <iostream>
#include <vector>
using namespace std;
bool containsDuplicate(vector<int>& nums) {
sort(nums.begin(), nums.end());
cout << nums.size() << endl;
int j = 0;
cout << nums.size() - 1 << endl;
cout << ( j < nums.size() - 1) << endl;
for (int i = 0; i < nums.size() - 1; i++) {
cout << nums.size() << endl;
if (nums[i] == nums[i + 1])
return true;
}
return false;
}
int main() {
vector<int> a;
cout << containsDuplicate(a) << endl;
return 0;
}
当nums.size() = 0
时,因为nums.size()
类型是size_t
,是unsigned long long
的typedef,只能是正数,所以当nums.size() -1
, nums.size()
是0时,答案成二进制表示了,为2^64 - 1,一个暴大的正数,所以WA了。建议不要把nums.size()
写在for里面,每次都会调用nums.size()
, 增加开销。。。
这篇关于C++求数组是否含有重复元素的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文