思路:
参考26题目双指针的思想,只不过这道题不是快慢指针。
看到示例里面数组是无序的,也就是说后面的元素也是可能跟给定 val值相等的,那么怎么处理呢。就想到了从前往后遍历,如果left对应的元素 == val时,就把最后一个元素挪过来,这样既缩短了数组长度,也解决了后面元素不好比较的问题。
是我自己想出来的噢,我好棒哈哈哈哈
代码
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int len = nums.size();
int left = 0;
int right = nums.size() - 1;
while(left <= right){
if(nums[left] == val){
nums[left] = nums[right];
right--;
len--;
}
else if(nums[left] != val){
left++;
}
else {
continue;
}
}
return len;
}
};