描述
题目标题:
将两个整型数组按照升序合并,并且过滤掉重复数组元素。
输出时相邻两数之间没有空格。
输入描述:
输入说明,按下列顺序输入:
1 输入第一个数组的个数
2 输入第一个数组的数值
3 输入第二个数组的个数
4 输入第二个数组的数值
输出描述:
输出合并之后的数组
示例1
输入:
3 1 2 5 4 -1 0 3 2
输出:
-101235
代码部分:
#include<stdio.h>
#include<stdlib.h>//qsort函数头文件
//以下是Senky的代码:
//算法思路:输入的时候就将两个数组合并到一个,再进行升序排序
//先输出首元素,如果后继当前元素和上一个元素相等那么就是多余的,如此确保了唯一性
int cmp(const void* p1, const void* p2) {
return *(int*)p1 - *(int*)p2; //升序排列
}
int main() {
int m = 0; //第一个数组元素个数
int n = 0; //第二个数组元素个数
int i = 0;//循环变量
int j = 0;//循环变量
int num[1000] = {0};//将两个数组合并后的数组
while (~scanf("%d", &m)) { //第一个数组元素个数
for (i = 0; i < m; i++) {
scanf("%d", &num[i]); //输入第一个数组元素
}
scanf("%d", &n);//第二个数组元素个数
for (int j = 0; j < n ; j++) {
scanf("%d", &num[m + j]); //输入第一个数组元素
}
qsort(num, m + n, sizeof(num[0]), cmp);//排序
}
printf("%d", num[0]); //输出第一个元素
for (i = 1; i < m + n; i++) {
if (num[i] != num[i - 1]) { //如果当前元素与上一个元素不重复
printf("%d", num[i]); //则将当前元素输出
}
}
return 0;//编辑于2022/10/10
}
总结:
①算法思想没什么难度;
② 当前帖子仅供自我精进、学习使用,有不足之处欢迎指正;

京公网安备 11010502036488号