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