重複しないように2つの配列をどのようにマージしますか?
リストを統合し重複を削除する方法はイテレーションを使用することです。
具体的な手順は次のとおりです。
- 結合したい2つの配列arr1、arr2を定義する。
- 結果を格納する新しい配列 result を定義する。
- arr1の配列をループして、要素をresultの配列に追加する
- arr2の配列を繰り返し、各要素がresultの配列にすでにあるか判定し、存在しない場合はresultの配列に追加する。
- マージが完了すると、result配列にはマージされて重複が削除された結果が含まれます。
以下に示すのは、C言語で書かれたサンプルコードです。
#include <stdio.h>
int main() {
int arr1[] = {1, 2, 3, 4};
int arr2[] = {3, 4, 5, 6};
int len1 = sizeof(arr1) / sizeof(arr1[0]);
int len2 = sizeof(arr2) / sizeof(arr2[0]);
int result[100]; // 假设合并后的数组最大长度为100
int len = 0; // 合并后的数组长度
// 将arr1数组的元素添加到result数组中
for (int i = 0; i < len1; i++) {
result[len++] = arr1[i];
}
// 遍历arr2数组,将不重复的元素添加到result数组中
for (int i = 0; i < len2; i++) {
int exist = 0; // 标记arr2当前元素是否已存在于result数组中
for (int j = 0; j < len; j++) {
if (arr2[i] == result[j]) {
exist = 1;
break;
}
}
if (!exist) {
result[len++] = arr2[i];
}
}
// 输出合并并去重后的数组
for (int i = 0; i < len; i++) {
printf("%d ", result[i]);
}
printf("\n");
return 0;
}
上記のコードの出力は1 2 3 4 5 6となり、重複を削除して結合した配列を表しています。