ビンソート使って
int[] b=new int[10];
for(int i=0; i<a.length; i++){
for(int j=0; j<a[i].length;j++){
b[a[i][j]]++;
}}
ってやれば、この後b[1-10]のチェックをしても、配列アクセス18回位で重複検出できる。