删除元素

来源:互联网 发布:vss软件保护 编辑:程序博客网 时间:2024/05/01 00:51

描述

给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。

元素的顺序可以改变,并且对新的数组不会有影响。

样例

给出一个数组 [0,4,4,0,0,2,4,4],和值 4

返回 4 并且4个元素的新数组为[0,0,0,2]

思考

  1. 原先以为是将 [0, 1, 1, 2, 2] -> [0, 2 , 2] ;
  2. 实际上题目的是 [0, 1, 1, 2, 2] -> [0, 2, 2, 1, 1],并不要求删除原先的数字,只需要对前面的数字进行覆盖就好

代码

//  By Lentitude//  第一种情况代码class Solution {public:    /**      *@param A: A list of integers     *@param elem: An integer     *@return: The new length after remove     */    int removeElement(vector<int> &A, int elem) {        // write your code here        if (A.empty()) return 0;        for (int i = 0; i != A.size(); ++i){            while (A[i] == elem){                A.erase(A.begin() + i);            }        }        return A.size();    }};
//  By Lentitude//  第二种情况代码class Solution {public:    /**      *@param A: A list of integers     *@param elem: An integer     *@return: The new length after remove     */    int removeElement(vector<int> &A, int elem) {        // write your code here        int i = 0, j = 0;        int len = A.size();        int ret = 0;        while(j < len){            if(A[j] != elem){                ++ret;                A[i]=A[j];                ++i;            }            ++j;        }        return ret;    }};
0 0
原创粉丝点击