シンプルでよいコードである.成程,HashSetのcontains()ならO(1)だ.
http://codereview.stackexchange.com/questions/9909/intersection-of-arrays-java
テストしたと書いていながら若干間違いがあるので,以下のように書き直し.
package org.tanuneko; import java.util.*; public class Intersect { private static List<Integer> intersect( final List<Integer> a, final List<Integer> b ) { Set<Integer> canAdd = new HashSet<Integer>(a); List<Integer> result = new ArrayList<>(); for( int n : b ) { if( canAdd.contains(n) ) { result.add(n); canAdd.remove(n); } } return result; } public static void main( String args[] ) { List<Integer> a = Arrays.asList( 4,2,6,1,8,9,5 ); List<Integer> b = Arrays.asList( 8,6,3,5,0,10,1 ); System.out.println( intersect( a,b ) ); } }
0 件のコメント:
コメントを投稿