T
The Poor
In FAQ,
+
How do I compute the difference of two arrays? How do I compute the
intersection of two arrays?
Use a hash. Here's code to do both and more. It assumes that each
element is unique in a given array:
@union = @intersection = @difference = ();
%count = ();
foreach $element (@array1, @array2) { $count{$element}++ }
foreach $element (keys %count) {
push @union, $element;
push @{ $count{$element} > 1 ? \@intersection :
\@difference }, $element;
}
Note that this is the *symmetric difference*, that is, all
elements in
either A or in B but not in both. Think of it as an xor operation.
-
But it is not what I need. I need to find what in array1, but not in
array2. Can anyone show me how to do that?
If I just juse array1-union, then should that be the what I need? What
is the running time will be? 2(n+m)?
Currently I am using 2 for loops to compare anything in 1 to anything
in 2, that makes the running time n*m/2
+
How do I compute the difference of two arrays? How do I compute the
intersection of two arrays?
Use a hash. Here's code to do both and more. It assumes that each
element is unique in a given array:
@union = @intersection = @difference = ();
%count = ();
foreach $element (@array1, @array2) { $count{$element}++ }
foreach $element (keys %count) {
push @union, $element;
push @{ $count{$element} > 1 ? \@intersection :
\@difference }, $element;
}
Note that this is the *symmetric difference*, that is, all
elements in
either A or in B but not in both. Think of it as an xor operation.
-
But it is not what I need. I need to find what in array1, but not in
array2. Can anyone show me how to do that?
If I just juse array1-union, then should that be the what I need? What
is the running time will be? 2(n+m)?
Currently I am using 2 for loops to compare anything in 1 to anything
in 2, that makes the running time n*m/2