标题关于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;
}