标题关于C++ 的bool , int 数组的一个小小疑问:
原题是数组去重排序。用set来做更好更简便。这个分享只是一个疑问(针对去重):
用bool数组记录遍历过的数,同样的数遍历只会让标志置为true,但在牛客网上,用例通过只有30%,不通过的用例出现了输入没有的数。
实在理解不能,不知道路过的大佬能否解答一下?是初始化错了?还是出现了什么特殊情况?
vector<int> sort_reserve(vector<int> a){
vector<int> res;
if (a.size() == 0)
return res;
bool *flag = new bool [1001];
memset(flag, false, sizeof(flag));
for(int i = 0; i< a.size() ; i++){
flag[ a[i] ] = true ;
}
for(int i =1; i< 1001;i++){
if( flag[i] !=false ){
res.push_back(i);
}
}
return res;
}
用int 数组类似的道理,但是能全部通过。
vector<int> sort_reserve(vector<int> a){
vector<int> res;
if (a.size() == 0)
return res;
int *flag = new int [1001];
memset(flag, 0, sizeof(flag));
for(int i = 0; i< a.size() ; i++){
flag[ a[i] ] ++ ;
}
for(int i =1; i< 1001;i++){
if( flag[i] !=0 ){
res.push_back(i);
}
}
return res;
}
本文探讨了使用C++进行数组去重的两种方法:一种是利用bool数组标记已遍历元素,另一种是使用int数组计数。文章指出,尽管bool数组方法直观,但在特定情况下可能遇到未预料的问题,而int数组方法则表现得更为稳定。
3526

被折叠的 条评论
为什么被折叠?



