一.题目描述
二.解题技巧
这道题和Remove Duplicates from Sorted Array类似,不同的是这里只要删除值等于给定值的元素即可,可以采用和前面的题相同的做法:可以将原来的数组看作一个栈,设定一个栈顶指针,在对数组进行遍历的时候,判断元素是否等于给定值,如果等于,则直接进行数组的下一个元素,如果不等于,则将该元素放入到栈顶,然后更新指针并处理数组的下一个元素。之所以能这么做,是因为我们在遍历过程中,对于数组元素的访问的下标总是不小于栈顶指针的,因此,可以将原来的数组直接当作一个栈来使用,这样就能做到in-place处理了。
这道题相对比较简单,也没有多少边界条件要考虑,是一道练手的题。这里在进行删除后数组的元素的个数的统计的时候,有一个技巧,即栈顶指针就已经说明了数组中元素的个数了,因此,可以直接返回栈顶指针就可以了(这里的栈顶指针是用数组的下标表示的)。当然,也可以统计等于给定值的元素的个数,然后用原来的数组个数减去该值就可以得到新的数组的值了。
三.示例代码
class Solution
{
public:
int removeElement(int A[], int n, int elem)
{
int TrueIndex = 0;
for (int Index = 0; Index < n; Index++)
{
if (A[Index] != elem)
{
A[TrueIndex] = A[Index];
TrueIndex++;
}
}
return TrueIndex;
}
};
四.体会
这道题实现简单,没有很严格的边界条件,可以寻求别的解决方式。
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文:http://blog.csdn.net/liyuefeilong/article/details/47067985