题目



知识点
思路
双指针
栈------灵茶山艾府
并没有真正的使用栈,而是将 nums[] 数组看作一个栈,基于范围的for循环进行入栈操作
错误
判空
循环条件
要考虑 left = right 的情况
题解
自己双指针
cpp
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
if(nums.size() == 0){
return 0;
}
int left = 0, right = nums.size() - 1;
while (left <= right) {
if (nums[left] == val) {
nums[left] = nums[right];
right--;
}
else {
left++;
}
}
return left;
}
};
灵茶山艾府
cpp
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int stack_size = 0;
for (int x : nums) {
if (x != val) {
nums[stack_size++] = x; // 把 x 入栈
}
}
return stack_size;
}
};