删除数组中的指定元素(了解如何删除数组中的指定元素,并返回一个新的数组,看这一篇就足够了!)

        前言:有时候我们会遇到要在数组中删除指定元素,但是不能创建新的数组,那么这个时候应该如何操作呢?


✨✨✨这里是秋刀鱼不做梦的BLOG

✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客

废话不多讲,让我们直接开始~

1.题目描述

        先让我来看一下题目描述:

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

我们用图来大体理解一下要求:

现在我们就大体理解了题目的要求。

2.题目讲解

        了解完了题目的意图,现在我们就对其进行讲解,首先我们先大致了解一下解题思路:

        1.要删除数组中的指定数据,我们就需要对数组进行遍历操作;

        2.不能创建新的数组,那么我们只能在原数组上进行修改操作;

解题代码如下:

#include<stdio.h>
int main()
{
	//原数组
	int arr[] = { 1,2,3,4,5,6,6,7,8,9,10 };
	//要被删除元素
	int deleteNumber = 6;

	int i = 0;
	int j = 0;
	//求出原数组长度
	int sz = sizeof(arr) / sizeof(arr[0]);
	//遍历数组
	for (i = 0; i < sz; i++)
	{
		//判断是否是所要删除的元素
		if (arr[i] != deleteNumber)
		{
			arr[j] = arr[i];
			j++;
		}
	}
	//打印修改后的数组中的数据
	for (int k = 0; k < j; k++)
	{
		printf("%d ", arr[k]);
	}

	return 0;
}

对于以上代码中的难以理解点,我们现在进行解释:

        在上面的代码中,我们创建了 i 和 j 两个变量,其中 i 变量是用来进行遍历数组的,而 j 变量是用来修改数组数据的,或者说是用来刷新原数组中的数据的;

简单来说 i 就是用来遍历整个数组,检查对应索引位置元素是否是目标元素,如果不是赋值给 j 位置,如果是则跳过该位置元素,而 j 在原地等待。

当然此问题有许多解决方案,以上只是讲解了其中一种,其余方案读者可以自己思考。


以上就是该问题的所有讲解了~~~

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值