阅读量:2
实现合并两个数组并去重的方法有很多种,以下是一种常用的方法:
- 声明一个新的数组,用于存放合并后的结果。
- 先将第一个数组中的元素逐个复制到新的数组中。
- 遍历第二个数组,判断每个元素是否在新的数组中已存在,若不存在则将其复制到新的数组中。
- 最后得到的新数组即为合并后去重的结果。
以下是一个示例代码:
#include <stdio.h> #define MAX_SIZE 100 void mergeAndRemoveDuplicates(int arr1[], int size1, int arr2[], int size2, int mergedArr[], int *mergedSize) { int i, j, k; // 复制第一个数组中的元素到新数组 for (i = 0; i < size1; i++) { mergedArr[i] = arr1[i]; } *mergedSize = size1; // 合并后的数组大小 // 遍历第二个数组 for (i = 0; i < size2; i++) { int isDuplicate = 0; // 判断当前元素是否已存在于新数组中 for (j = 0; j < *mergedSize; j++) { if (arr2[i] == mergedArr[j]) { isDuplicate = 1; break; } } // 若不存在则将其复制到新数组中 if (!isDuplicate) { mergedArr[*mergedSize] = arr2[i]; (*mergedSize)++; } } } int main() { int arr1[] = {1, 2, 3, 4, 5}; int size1 = sizeof(arr1) / sizeof(arr1[0]); int arr2[] = {4, 5, 6, 7, 8}; int size2 = sizeof(arr2) / sizeof(arr2[0]); int mergedArr[MAX_SIZE]; int mergedSize; mergeAndRemoveDuplicates(arr1, size1, arr2, size2, mergedArr, &mergedSize); printf("合并并去重后的数组:"); for (int i = 0; i < mergedSize; i++) { printf("%d ", mergedArr[i]); } printf("\n"); return 0; }
运行结果:
合并并去重后的数组:1 2 3 4 5 6 7 8