题目
思路
- 此题为
store_index型双指针模板题。 store_index的做法取法“快速排序”中将数据归类到基准值两侧的操作。- 一根指针为
store_index,放在起始位置待命,另外一根指针为i,顺序遍历整个数组,如果遇到了符合条件的值,那么执行两个操作。1.交换store_index和i位置的数据;2.store_index += 1
代码
 
class Solution {public:    int removeElement(vector<int>& nums, int val) {        // store index 双指针        /* 方法1 */        /*        int n = nums.size();        int store_index = n - 1;        for (int i = n - 1; i >= 0; --i) {            if (nums[i] == val) {                swap(nums[i], nums[store_index]);                store_index--;            }        }        return store_index + 1;        */        /* 方法2 */        int n = nums.size();        int store_index = 0;        for (int i = 0; i < n; ++i) {            if (nums[i] != val) {                swap(nums[i], nums[store_index]);                store_index++;            }        }        return store_index;            }};