给定一个数组和一个数(该数不一定在数组中),从数组里删掉这个数字,返回剩下的数组长度。
如:A[]= {1, 2, 3, 4, 5}, 要删除数字3,那么返回数组长度为4.
提示:int removeElement(int A[], int n, int elem)
其中,n代表数组长度,elem代表要删掉的元素。
格式:
输入一个数n,继而输入一个数组A[n],接着输入要删除的元素elem,返回剩余数组长度index.
样例输入
2
3 3
3
样例输出
0
看其本质,是一个查找问题。比较直接的想法就是顺序查找,即从头到尾扫描一遍,每次遇见要删除的元素,计数器count就加1,最后结果就是原数组长度减去count。由于这里并不需要返回删除后的数组,因此也就省略掉删除操作了。
由于该数组并非是有序的,且题目仅要求查找,算是静态查找,也就不需要树表查找了。
代码如下:
#include<stdio.h>
#include<stdlib.h>
int Remove(int a[], int n, int elem);
int main(void) {
int *a;
int n,elem, i, len;
scanf("%d",&n);
if(n <1)
return0;
a = (int*) malloc (n * sizeof(int));
if(!a)
return0;
for(i = 0;i < n; i++)
scanf("%d",&a[i]);
scanf("%d",&elem);
len =Remove(a, n, elem);
printf("%d",len);
free(a);
return 0;
}
int Remove(int a[], int n, int elem) {
int len =n;
int i = 0;
while(i< n) {
if(a[i]== elem)
len--;
i++;
}
returnlen;
}