解题思路:
一句话总概括:把不等同于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;
}
};
本文介绍了一种使用C++编程语言中的指针技巧,通过遍历数组并判断元素是否等于给定值,将不等于的元素向数组前方移动,最后返回移除元素后的新数组长度。
8万+





