题解 | #序列中删除指定数字#
序列中删除指定数字
http://www.nowcoder.com/practice/7bbcdd2177a445a9b66da79512b32dd7
int main()
{
int n = 0;
scanf("%d",&n);
int arr[n];
int i = 0;
for(i = 0;i<n;i++)
{
scanf("%d ",&arr[i]);
}
int x = 0;//要删除的一个整数
scanf("%d ",&x);
int ret = n;
for(i = 0;i<n;i++)
{
/*if(arr[i]!=x)
{
printf("%d ",arr[i]);
}*///投机取巧写法
int j = 0;
if(arr[i]==x)//3
{
for(j = i;j<ret;j++)//3 4 5
{
arr[j]=arr[j+1];//把后面的数字前移
}
ret--;//每删除一次,打印的时候就少打印一位
i--;
}
}
for(i = 0;i<ret;i++)
{
printf("%d ",arr[i]);
}
return 0;
}
包含投机取巧写法,就是数组不改变,只输出要删除的数以外的数字 不投机取巧的方法就是删除整数了之后把这个数后面的所有数都前移。