By identical I mean two Arrays contain same elements, order of elements in Arrays are not matter here.
The solution I came up with is like this(which turns out a wrong approach as pointed out in comments):
if the size of two Arrays are equal
See True, find all elements of Array A in Array B
All Found, find all elements of Array B in Array A
All Found, then I get conclusion two Arrays are identical
However, is there better algorithm in term of time complexity?
Let’s say you have an
User[]array 1 andUser[]array 2. You can lop through array one and add them toDictionary<User, int>dictionary where the key is the user and the value is a count. Then you loop through the second array and for each user in array 2 decrement the count in the dictionary (if count is greater than 1) or remove the element (if count is 1). If the user isn’t in the dictionary, then you can stop, the arrays don’t match.If you get to the end and had previously checked length of the arrays is same, then the arrays match. If you hadn’t checked length earlier (which of course you still should have), then you can just verify the dictionary is now empty after completely looping through array 2.
I don’t know exactly what the performance of this is, but it will be faster than sorting both lists and looping through them comparing element by element. Takes more memory though, but if the arrays are not super large then memory usage shouldn’t be an issue.