我有大小为 N 的数组(数字)。我需要找到唯一的最小元素,所以如果 arr[5] ={1,2,3,1,2}
,答案是3。
我尝试使用以下代码:
Int n = sizeof(arr)/sizeof(arr[0]);
sort(arr,arr + n);
for(int i = 0;i<N;i++){
for(int j = 0;j<N;j++){
if(arr[i] == arr[j]){
remove(arr,arr+n,i);
remove(arr,arr+n,j);
}
}
}
但问题是,这只有在我有 2 个相同的 arr 元素时才有效。我可以创建相同数量的 if 条件,但我可以有 3、4 或 1000,所以这会很奇怪。那么什么是更优雅的方式来做到这一点?提前谢谢你。
最佳答案
试试这个代码,它使用了一个无序的映射
int m = 2147483647;
int int_array[] = { 1,2,3,3,1,6,7,7,9 };
unordered_map<int, int> map;
for (int i = 0; i < sizeof(int_array) / sizeof(int_array[0]); i++) {
map[int_array[i]] = map[int_array[i]] + 1;
}
unordered_map<int, int>::iterator itr;
for (itr = map.begin(); itr != map.end(); itr++)
{
if (itr->second == 1) {
if (itr->first < m) {
m = itr->first;
}
}
}
printf("minimum unique is %d", m);
关于c++ - 如何在 C++ 中找到数组的最小和唯一元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58901389/