解题思路:
一句话总概括:把不等同于val的元素往数组前面移动
详细解释:
1. 创建一个pointer 取名为left 用于作为数组的下标
2. 遍历数组的每个元素(也就是for loop),从0下标开始
3. 如果下标i的元素不等于目标值val,那就把此元素写入nums[left],实际上就是把本身再次覆盖
4. 如果i下标元素等于,那就什么也不做,直接跳到i+1元素,以此重复循环到最后一个元素
以下是代码:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int left; //创建一个pointer 取名为left 用于作为数组的下标
left=0;
for(int i=0; i<nums.size();i++) //遍历每个元素
{
if(nums[i]!=val) //如果不等于目标值val
{
nums[left]=nums[i]; //那么就把元素存入下标为left的相同数组
left++; //由于存入了元素,所以left下标增加(向右移)
}
//如果相等于目标值val,那就不什么也不做,直接增加i的值去遍历下一个元素
}
return left;
}
};