perl 两个数组去重复。

@a =(1,2,3,4,5,6,7);
@b =(1,3,5);

用perl 求 @a 去掉@b中元素中的数组。

繁花如伊
浏览 685回答 2
2回答

海绵宝宝撒

1234567891011121314151617181920212223242526272829303132333435两种方法,1:要是ab按照顺序排的话my&nbsp;($i,&nbsp;$j)&nbsp;=&nbsp;(0,&nbsp;0);AA:&nbsp;while&nbsp;($i&nbsp;<=&nbsp;$#a){while&nbsp;($b[$j]&nbsp;<&nbsp;$a[$i]){$j++;last&nbsp;AA&nbsp;if&nbsp;($j&nbsp;>&nbsp;$#b);}if&nbsp;($b[$j]&nbsp;==&nbsp;$a[$i]){print&nbsp;"delete&nbsp;$a[$i]\n";splice(@a,&nbsp;$i,&nbsp;1);}else{$i++;}}print&nbsp;"@a";2:要是不按照顺序可以用hashfor&nbsp;(@b){$b{$_}&nbsp;=&nbsp;1;}$i&nbsp;=&nbsp;0;while&nbsp;($i&nbsp;<=&nbsp;$#a){if&nbsp;($b{$a[$i]}){print&nbsp;"delete&nbsp;$a[$i]\n";splice(@a,&nbsp;$i,&nbsp;1);}else{$i++;}}print&nbsp;"@a";&nbsp;&nbsp;

元芳怎么了

12345678910111213use&nbsp;strict;my&nbsp;%hash;&nbsp;my&nbsp;@a&nbsp;=(1,2,3,4,5,6,7);&nbsp;my&nbsp;@b&nbsp;=(1,3,5);foreach&nbsp;my&nbsp;$ip&nbsp;&nbsp;(@b)&nbsp;{&nbsp;$hash{$ip}&nbsp;=&nbsp;1}for(my&nbsp;$i&nbsp;=&nbsp;0;&nbsp;$i&nbsp;<&nbsp;@a;&nbsp;$i++)&nbsp;{&nbsp;delete&nbsp;$a[$i]&nbsp;if($hash{$a[$i]}&nbsp;==&nbsp;1)&nbsp;;}print&nbsp;"@a\n";&nbsp;&nbsp;&nbsp;
打开App,查看更多内容
随时随地看视频慕课网APP