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;
}
};
- 時(shí)間復(fù)雜度:
- 空間復(fù)雜度:
容易發(fā)現(xiàn)slowIndex <= fastIndex,可以看作是fastIndex 在前面搜索非val的值竖螃,然后用slowIndex在原來(lái)的數(shù)組上把fastIndex搜索到的非val值拿過(guò)來(lái)構(gòu)成一個(gè)新的數(shù)組淑廊。
fastIndex跑完后,slowIndex就停在了新數(shù)組的最后一個(gè)元素上特咆。