c++ - 如何在 C++ 中找到数组的最小和唯一元素?

标签 c++ arrays sorting unique min

我有大小为 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/

相关文章:

c++ - C/C++ pthread 信号和指针

android - 将 byteArray 转换为字符串以初始化 jsonObject

c++ - 我们如何有效地从数组中找到第二个最大值?

php - 我可以在php中自由设置成员吗?

c++ - 类型转换为抽象类?

javascript - 数据通过 websocketpp 返回为 json,但通过 messagepack 返回为 Blob

c++ - 使用 WinAPI 的多个读取器/单个写入器锁定

sorting - 按指定字段对结构 slice 进行排序

javascript - jquery或js中优先排序

php - 如何在 Magento 中获取属性选项的位置?