class Solution {
public:
int removeElement(vector<int>& nums, int val) {
int slowIndex = 0;
for (int fastIndex = 0; fastIndex < nums.size(); fastIndex++) {
if (val != nums[fastIndex]) {
nums[slowIndex++] = nums[fastIndex];
}
}
return slowIndex;
}
};
- 时间复杂度:
- 空间复杂度:
容易发现slowIndex <= fastIndex,可以看作是fastIndex 在前面搜索非val的值,然后用slowIndex在原来的数组上把fastIndex搜索到的非val值拿过来构成一个新的数组。
fastIndex跑完后,slowIndex就停在了新数组的最后一个元素上。