码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode笔记:Remove Element

时间:2015-07-26 15:50:52      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:leetcode   c++   algorithm   stack   指针   

一.题目描述

技术分享

二.解题技巧

这道题和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;  
        }  
    };  

四.体会

这道题实现简单,没有很严格的边界条件,可以寻求别的解决方式。

版权声明:本文为博主原创文章,未经博主允许不得转载。

leetcode笔记:Remove Element

标签:leetcode   c++   algorithm   stack   指针   

原文地址:http://blog.csdn.net/liyuefeilong/article/details/47067985

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!