检查两个数组是否相等

问题描述 投票:0回答:1

我试图知道两个给定的数组是否相等,与元素的排列无关,但包含相同的元素,并且所有元素的频率必须相同。

    int SameArray(int arr1[], int arr2[], int N, int M)
    {
        unordered_map<int, int> ump;
        if(N == M)
        {
            for(int i = 0; i < N; i++)
            {
                ump[arr1[i]]++;
            }
            for(int i = 0; i< M; i++)
            {
                if(ump.find(arr2[i]) != ump.end())
                    ump[arr2[i]]--;
            }
            if(ump.empty())
            return 1;
        }
        return 0;
    }

它没有显示任何错误,但输出始终为0。

c++ unordered-map
1个回答
1
投票

您正在寻找std::is_permutation

std::is_permutation

我自由地将函数更改为bool SameArray(std::vector<int> arr1, std::vector<int> arr2) { return std::is_permutation(arr1.begin(), arr1.end(), arr2.begin()); } ,并以bool s作为函数参数,因为它是C ++,而不是C。


0
投票

您需要检查地图中的每个键的值是否均为零。您可以执行以下代码来代替std::vector

std::vector
© www.soinside.com 2019 - 2024. All rights reserved.