27. Remove Element

来源:互联网 发布:nginx redis缓存 编辑:程序博客网 时间:2024/06/03 14:44

27. Remove Element


题目描述:

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

Do not allocate extra space for another array, you must do this by
modifying the input array in-place with O(1) extra memory.

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

Example:

Given nums = [3,2,2,3], val = 3,

Your function should return length = 2, with the first two elements of
nums being 2.

先排序再记录下val的起始位置,然后把val之后的其它元素填入val的位置

代码

int removeElement(vector<int>& nums, int val) {    if (nums.empty())    {        return 0;    }    sort(nums.begin(), nums.end());    int index = 0;    int count = 0;    for (int i = 0; i < nums.size(); i++)    {        if (nums[i] != val)        {            count++;        }        else        {            index = i;            for (int j = i; j < nums.size(); j++)            {                if (nums[j] != val)                {                    nums[index++] = nums[j];                    count++;                }            }            return count;        }    }    return nums.size();}