思路:用now来代表新数组的下标,old_来代表原数组的下标,与val进行对比,不是val的元素存到新数组中。
易错点:此时now和old_都会初始化成0,这里就不用像上一题中的二分一样,用num来存nums[old_]的值,直接用nums[old_]来表示即可,如果非要用num来存,是错的,暂时没想明白是为什么。
题解c++:
class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int now=0;
int old_=0;
for(old_=0;old_<nums.size();old_++)
{
if(nums[old_]!=val)
{nums[now]=nums[old_];now++;}
}
return now;
}
};