栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言题目,指定删除数组中的同一个数字

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言题目,指定删除数组中的同一个数字

题目要求,指定一个数字,将数组中和他相同的所有数字删除,时间复杂度为O(N).空间复杂度为O(1) ,并且不可另开辟数组,函数最后返回剩余数组长度

解题思路:

假设要删除的数字为3

首先看这张图:

我们可以先试想一下,当src等于3的时候,那么就要让后面的数字覆盖掉3,这就代表,当src遇到3时必须记录一下3的位置,再让src++找到不是3的元素,最后进行替换,dest就起到这么一个记录作用,当src不等于3时,那么dest = src,并且dest++,src++,当src等于3时,dest不动,src++指向后面的元素,如果等于3,那么继续++.如果不等于3继续++,限制条件就为src!=数组长度,最后返回dest的值,也就是当前不是3的所有元素末尾的位置+1,也就是数组长度

解题代码如下:

 

#include

int Arraydel(int* arr,int x,int len)
{
	int dest = 0;
	int src = 0;
	while (src < len)
	{
		if (arr[src] != x)
		{
			arr[dest] = arr[src];
			dest++;
			src++;
		}
		else
			src++;
	}
	return dest;

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/980117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号