不爱学Java的小菜 2023-04-01 23:45 采纳率: 60%
浏览 20
已结题

数据结构求两数组并集二路归并

数据结构内容,求两个数组的并集用二路归并法和顺序表,我求出来的并集是有重复数字。

img

  • 写回答

2条回答 默认 最新

  • threenewbee 2023-04-02 08:01
    关注
    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));
        }
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 4月10日
  • 已采纳回答 4月2日
  • 创建了问题 4月1日