列表

详情


HJ80. 整型数组合并

描述

题目标题:

将两个整型数组按照升序合并,并且过滤掉重复数组元素。
输出时相邻两数之间没有空格。



输入描述

输入说明,按下列顺序输入:
1 输入第一个数组的个数
2 输入第一个数组的数值
3 输入第二个数组的个数
4 输入第二个数组的数值

输出描述

输出合并之后的数组

示例1

输入:

3
1 2 5
4
-1 0 3 2

输出:

-101235

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C 解法, 执行用时: 1ms, 内存消耗: 256KB, 提交时间: 2020-07-07

#include <stdio.h>

int main()
{
    int m;
    int num[1000];
    while(scanf("%d",&m) != EOF)
    {
        for(int i = 0;i < m;i++)
        {
            scanf("%d",&num[i]);
        }
        int n;
        int tmp;
        scanf("%d",&n);
        for(int j = 0;j < n;j++)
        {
            scanf("%d",&num[m+j]);
        }
        for(int i = 0;i < m + n -1;i++)
        {
            for(int j = 0;j < m + n -1 - i;j++)
            {
                if(num[j] > num[j+1])
                {
                    tmp = num[j];
                    num[j] = num[j+1];
                    num[j+1] = tmp;
                }
            }
        }
        printf("%d",num[0]);
        for(int i = 1;i < m + n;i++)
        {
            if(num[i] != num[i-1])
            {
                printf("%d",num[i]);
            }
        }
        printf("\n");
    }
    
    
    
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 256KB, 提交时间: 2020-07-07

#include<stdio.h>
#include<string.h>
int main()
{
  int n1,n2;
  while (scanf("%d",&n1)!=EOF)
  {
    int in1[1000];
    for(int i=0;i<=n1-1;i++)
    {scanf("%d",&in1[i]);}
    scanf("%d",&n2);
    //int in2[n2];
    for(int i=n1;i<=n1+n2-1;i++)
    {scanf("%d",&in1[i]);}
    for(int i=0;i<=n1+n2-2;i++)
    {
      for(int j=0;j<=n1+n2-2-i;j++)
      {
        if(in1[j]>in1[j+1])
        {
          int temp;
          temp=in1[j];
          in1[j]=in1[j+1];
          in1[j+1]=temp;
        }
      }
    }
    printf("%d",in1[0]);
    for(int i=1;i<=n1+n2-1;i++)
    {
     if(in1[i-1]==in1[i]);
      else  printf("%d",in1[i]);
    }
    printf("\n");
  }
}

上一题