leetcode--Remove Element

来源:互联网 发布:台湾 大陆电视剧 知乎 编辑:程序博客网 时间:2024/06/03 21:46

Given an array and a value, remove all instances of that value in place and return the new length.

The order of elements can be changed. It doesn't matter what you leave beyond the new length.


class Solution {public:    int removeElement(int A[], int n, int elem) {        int B[n];        int j=0;        for(int i=0;i<n;++i)        {            if(A[i]!=elem){B[j]=A[i];++j;}        }        for(int k=0;k<j;++k)        {            A[k]=B[k];        }        return j;    }};


如果不定一个数列的副本而是直接在原数列上修改的的话,用两个指针跟踪,一个是普通的最前端指针,一个是存放无重复元素的最前端指针。

class Solution {public:    int removeElement(int A[], int n, int elem) {        int i=0;//i是最前面的指针        int k=0;//k存放最新的无重复的元素        bool flag=true;        if(n==0)return 0;       while(i<n)       {           if(A[i]==elem){           while(A[i]==elem&&i<n)           {++i;}           while(A[i]!=elem&&i<n)           {               A[k]=A[i];               ++k;++i;           }                                         }           else {++i;++k;flag=false;}       }            return k;            }};


0 0
原创粉丝点击