2 つの並べ替えられたリストの交差を構築するアルゴリズムがあります。パフォーマンス テストで java.util.BitSet と比較すると、私のアルゴリズムは遅いです。
public static List<Integer> intersection(List<Integer> list1, List<Integer> list2) {
int size1 = list1.size(), size2 = list2.size();
int capacity = size1 < size2 ? size1 : size2;
List<Integer> intersection = new ArrayList<Integer>(capacity);
int i1 = 0, i2 = 0;
while (i1 < size1 && i2 < size2) {
if (list1.get(i1) < list2.get(i2))
i1++;
else if (list2.get(i2) < list1.get(i1))
i2++;
else {
intersection.add(list2.get(i2++));
i1++;
}
}
return intersection;
}
誰でも改善が見られますか?
ありがとう