题解 | #序列中删除指定数字#
序列中删除指定数字
http://www.nowcoder.com/practice/7bbcdd2177a445a9b66da79512b32dd7
#include<stdio.h>
#include<malloc.h>
int main(void)
{
int n,m;
scanf("%d",&n);
int *num=(int *)malloc(sizeof(int)*n);
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
scanf("%d",&m);
int count=0;//因为题意说序列有可能有重复的,所以用count变量计数删除了多少个
for(int i=0;i<n-count;i++)
if(num[i]==m)
{
count++;
int l=i;
i=l-1;//挪动后的元素还没查看,所以-1,然后for循环再+1,则i仍然停留在原来的i位置上
while(l<n-count)//确保数组移动时没有越界
{
num[l]=num[l+1];//数组元素的增删都需要其他数组元素挪动位置来覆盖掉要删除的元素
l++;
}
}
for(int i=0;i<n-count;i++)
printf("%d ",num[i]);
return 0;
}