(写给未来遗忘的自己)
给你一个数组 nums
和一个值 val
,你需要 原地 移除所有数值等于 val
的元素。元素的顺序可能发生改变。然后返回 nums
中与 val
不同的元素的数量。
假设 nums
中不等于 val
的元素数量为 k
,要通过此题,您需要执行以下操作:
- 更改
nums
数组,使nums
的前k
个元素包含不等于val
的元素。nums
的其余元素和nums
的大小并不重要。 - 返回
k
。
class Solution {
public:
int removeElement(std::vector<int>& nums, int val) {
int nums_size=nums.size();
int same=0;
double valu;
int k=0;
for(int i=0;i<nums_size-same;)
{
valu=nums[i];
if(valu==val)
{
nums[i]=nums[nums_size-1-same];
same++;
}else{
i++;
k++; }
}
return k;
}
};
注意:
1.在前后的数组交换的过程中,可能前后都是与val 相同的值,所以只要发生交换就不++ ,对交换过的数值再检查一次。
2.可以计数交换的次数,作为循环条件的一部分,到了交换过的数据就停止。