We need to check if 2 arrays are similar or not. The elements can be duplicate as well. For example A = {2,3,4,5,6,6} and B = {3,6,2,4,6,5} are similar.
I have a nai
You can do it in O(max(LA, LB)) time, where LA and LB are lengths of A and B, respectively, but at the price of using O(M) space, where M is an allowed range of values in the arrays (i.e. there are such constants min
and max
, so that min <= a, b <= max
holds true for every a in A and b in B).
seen = array[min..max]
foreach a in A
seen[a] = 'a'
foreach b in B
if seen[b] != 'a'
// A didn't contain b
return "A and B are not equivalent"
else
seen[b] = 'a,b'
foreach s in seen
if s == 'a'
// A did contain a which was not in B
return "A and B are not equivalent"
return "A and B are equivalent"
This approach is practical if the arrays are very large, but all their values fit in a small range.