题意:给一个数组,把给定值相同的元素去掉,然后返回处理后的数组长度。不能开新的数组。处理后的数组在处理后的长度内需要按照原来的顺序排列,题目不关心长度外的数组元素。
思路:使用一个计数器count,扫描整个数组,当元素等于给定值时count+1,否则将当前元素放到count个位置前,模拟把元素拿掉并将后面元素往前推的过程。
源代码如下:
int removeElement(vector<int>& nums, int val) {
int count = 0;
for (int i = 0; i < nums.size(); i++) {
if (nums[i] == val) {
count++;
} else {
nums[i - count] = nums[i];
}
}
return nums.size() - count;
}