Remove Element

LeetCode笔记 阅读(291)

编号 : 27      
难度 : <font color="green">Easy</font>

# 题目 :  
>Given an array nums and a value val, 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 1**:
>
>>Given nums = **[3,2,2,3]**, val = **3**,
>>
>>Your function should return length = **2**, with the first two elements of nums being **2**.
>>
>>It doesn't matter what you leave beyond the returned length.
>
>**Example 2**:
>
>>Given nums = **[0,1,2,2,3,0,4,2]**, val = **2**,
>>
>>Your function should return length = **5**, with the first five elements of nums containing **0, 1, 3, 0,** and **4**.
>>
>>Note that the order of those five elements can be arbitrary.
>>
>>It doesn't matter what values are set beyond the returned length.
>
>**Clarification**:
>
>Confused why the returned value is an integer but your answer is an array?
>
>Note that the input array is passed in by reference, which means modification to the input array will be known to the caller as well.
>
>Internally you can think of this:
>```
>// nums is passed in by reference. (i.e., without making a copy)
>int len = removeElement(nums, val);
>
>// any modification to nums in your function would be known by the caller.
>// using the length returned by your function, it prints the first len elements.
>for (int i = 0; i < len; i++) {
>    print(nums[i]);
>}
>```
>

# 解 :  
```Cpp
class Solution {
public:
    int removeElement(vector<int>& nums, int val) {
        int index = 0; // 指示要插入的位置
        for(int i = 0; i < nums.size(); i++)
        {
            if(nums[i] != val) // 把不等于val的数据插进去
            {
                nums[index] = nums[i];
                index += 1;
            }
        }
        return index;
    }
};
```

# 分析 :  
这道题要求把数组中指定的值删除,只要将保留的值放在数组开头并返回正确的长度即可,尾部多余的部分可以不用处理。

上述解法从头开始扫描数组,将不等于`val`的值依次插到开头,最后返回保留元素的长度。

Markdown使用 帮助


匿名

爆ぜろリアル  弾けろシナプス   バニッシュメント・ディス・ワールド!

匿名

我有一头小毛驴,我从来也不骑。