列表

详情


BC124. 序列中删除指定数字

描述

有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。

数据范围:序列长度和序列中的值都满足

输入描述

第一行输入一个整数(0≤N≤50)。

第二行输入N个整数,输入用空格分隔的N个整数。

第三行输入想要进行删除的一个整数。

输出描述

输出为一行,删除指定数字之后的序列。

示例1

输入:

6
1 2 3 4 5 9
4

输出:

1 2 3 5 9

示例2

输入:

5
1 2 3 4 6
5

输出:

1 2 3 4 6

原站题解

C 解法, 执行用时: 1ms, 内存消耗: 304KB, 提交时间: 2021-01-01

#include<stdio.h>
int main()
{
    int n,x;
    scanf("%d",&n);
    int arr[n],i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&arr[i]);
    }
    scanf("%d",&x);
    for(i=0;i<n;i++)
            arr[i]^=x;
    for(i=0;i<n;i++)
    {
        if(arr[i]!=0)
            printf("%d ",arr[i]^x);
    }
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 308KB, 提交时间: 2021-09-13

#include<stdio.h>
int main()
{
    int n=0;
    scanf("%d",&n);
    int arr[50]={0};
    for(int i=0;i<n;i++){
        scanf("%d",&arr[i]);
    }
    int num=0;
    scanf("%d",&num);
    int m=0;
    for(int i=0;i<n;i++)
    {
        if(arr[i]==num)
        {
            for(int j=i;j<n;j++)
            {
                arr[j]=arr[j+1];
            }
            i--;
            m++;
        }
    }
       for(int i=0;i<n-m;i++)
       {
           printf("%d ",arr[i]);
       }
    return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 328KB, 提交时间: 2021-09-09

#include<stdio.h>
int find(int* arr, int length,int num)
{
	int i;
	for (i = 0; i < length; i++)
	{
		if (arr[i] == num)
			return i;
	}
	return -1;
}
int main()
{
	int arr[50] = { 0 };

	int length;
	scanf("%d", &length);
	int i;
	for (i = 0; i < length; i++)
	{
		scanf("%d", arr + i);
	}

	int del;
	scanf("%d", &del);
	int j = find(arr, length, del);
	while (j != -1)
	{
		j = find(arr, length, del);
		if (j == -1)
			break;
		arr[j] = arr[j + 1];
		for (i = j + 1; i < length; i++)
		{
			arr[i - 1] = arr[i];
		}
		length--;
	}
	for (i = 0; i < length; i++)
	{
		printf("%d ", arr[i]);
	}

	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 332KB, 提交时间: 2021-09-10

#include<stdio.h>

int main()
{
	//建立数组及相关删除元素的变量
	int elementNumber = 0;
	int arrnum[50] = { 0 };
	int deleteElement = 0;
	int i = 0;         //for用变量;

	//开始输入;
	scanf("%d", &elementNumber);
	getchar();
	for (i = 0; i < elementNumber; i++)
		scanf("%d", &arrnum[i]);
	getchar();
	scanf("%d", &deleteElement);
/*  只能处理一个元素;
 *	//处理过程;
 *	for (i = 0; i < elementNumber; i++)
 *	{
 *		if (arrnum[i] == deleteElement)
 *			break;
 *	}
 *	for (; i < elementNumber; i++)
 *	{
 *		arrnum[i] = arrnum[i + 1];
 *	}
 */
	//输出过程中遇到;
	for (i = 0; i < elementNumber ; i++)
	{
		if (deleteElement != arrnum[i])
			printf("%d ", arrnum[i]);
	}

	return 0;
}

C 解法, 执行用时: 1ms, 内存消耗: 344KB, 提交时间: 2021-09-13

#include <stdio.h>
int main()
{
	int n = 0;
	scanf("%d", &n);
	int arr[10] = {0};
	int i = 0;
	for (i = 0; i < n; i++)
	{
		scanf("%d ", &arr[i]);
	}
	int m = 0;
	scanf("%d", &m);
	//1 2 3 4 5 9
	i = 0;
	for (i = 0; i < n; i++)
	{
		if (arr[i] != m)
		{
			printf("%d ", arr[i]);
		}

	}
	return 0;
}

上一题