题目
思路
- 此题为
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; }};