数据结构内容,求两个数组的并集用二路归并法和顺序表,我求出来的并集是有重复数字。
import java.util.ArrayList;
public class Main {
public static ArrayList<Integer> merge2(ArrayList<Integer> A, ArrayList<Integer> B) {
ArrayList<Integer> result = new ArrayList<>();
int i = 0, j = 0;
while (i < A.size() && j < B.size()) {
if (A.get(i) < B.get(j)) {
result.add(A.get(i));
i++;
} else if (A.get(i) > B.get(j)) {
result.add(B.get(j));
j++;
} else {
result.add(A.get(i));
i++;
j++;
}
}
while (i < A.size()) {
result.add(A.get(i));
i++;
}
while (j < B.size()) {
result.add(B.get(j));
j++;
}
// 去重
ArrayList<Integer> finalResult = new ArrayList<>();
finalResult.add(result.get(0));
for (int k = 1; k < result.size(); k++) {
if (!result.get(k).equals(result.get(k-1))) {
finalResult.add(result.get(k));
}
}
return finalResult;
}
public static void main(String[] args) {
ArrayList<Integer> A = new ArrayList<>();
A.add(1);
A.add(3);
A.add(3);
A.add(5);
ArrayList<Integer> B = new ArrayList<>();
B.add(2);
B.add(3);
B.add(4);
B.add(6);
System.out.println(merge2(A, B));
}
}
不知道你这个问题是否已经解决, 如果还没有解决的话: