描述
给定一个数字T和一个数组S,写一个函数删除S中的所有的T元素,返回删除后的新长度。
数组元素的顺序没有可以改变,也不用关心新长度之后的元素是什么内容。
分析
这是一个原地删除的问题,可以设定两个游标i和index:
1,初始值:i=0; index=0; i标识当前要判断的值,index为数组的新长度;
2,判断逻辑:若S[i] != target,则S[index++]=S[i]; i++;,否则i++;
代码实现如下:
int removeElement(int A[], int n, int target)
{
int index = 0;
for(int i=0; i<n; i++){
if (A[i] != target) {
A[index++] = A[i];
}
}
return index;
}
时间复杂度O(n)、空间复杂度为O(1)。
网友评论