class Solution {
public:
//笨方法时间有点长
int removeElement(vector<int> &nums, int val) {
for (vector<int>::iterator it = nums.begin(); it != nums.end();) {
if (*it == val)
nums.erase(it);
else
it++;
}
return nums.size();
}
//左右指针解法
int removeElement1(vector<int> &nums, int val) {
int left = 0, right = 0;
for (right = 0; right < nums.size(); right++) {
if (nums[right] != val) {
nums[left] = nums[right];
left++;
}
}
return left;
}
//左右指针优化
int removeElement2(vector<int> &nums, int val) {
int left = 0, right = nums.size();
while (left < right) {
if (nums[left] == val) {
nums[left] = nums[right - 1];
right--;
} else {
left++;
}
}
return left;
}
};