题目要求:计算两个集合的并集
解题思路:
- 提示输入
- 把长的数组的先直接塞入c数组中
- 用短数组和长数组进行不断的比较
- 确定出不同的数
- 接在c数组的后面
- 输出结果
import java.util.Scanner; public class E201_05_03_数组并集 { public static void main(String[] args) { System.out.printf("请输入数组 A 的长度,然后按顺序输入数据:"); Scanner scan = new Scanner(System.in); int n = scan.nextInt(); int []arrA = new int[n];//第一个数组的长度 n for (int i = 0; i <n ; i++) { arrA[i] = scan.nextInt(); } System.out.printf("请输入数组 B 的长度,然后按顺序输入数据:"); int m = scan.nextInt(); int []arrB = new int[m];//第二个数组的长度 m for (int i = 0; i <m ; i++) { arrB[i] = scan.nextInt(); } int []arrC = new int[n+m]; int count=0;//计算相同个数 ,arrC数组的最大长度为n+m-count; for (int i = 0; i <n ; i++) { arrC[i] = arrA[i]; } for (int j=0;j<m;j++) { boolean flag = true; for (int i = 0; i <n ; i++) { if ( arrB[j] == arrA[i]){ count++; flag=false; } } if (flag) { if (count == 0) { arrC[n + j] = arrB[j]; }else { arrC[n + m -count-1 ] = arrB[j]; } } } System.out.printf("两个数组的并集:\n "); for (int i = 0;i<n+m-count;i++) { System.out.printf(" %d ",arrC[i]); } } }
请输入数组 A 的长度,然后按顺序输入数据:4
1 2 3 4
请输入数组 B 的长度,然后按顺序输入数据:3
3 4 8
两个数组的并集:
1 2 3 4 8