思路:
参考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;}
};