移除元素
分析
这题的核心就是快慢指针,思路本身并不复杂。
我们可以取两个指针,慢指针用于逐个读取元素,快指针在 nums[fast] = val 时跳过。
然后我们仅需返回 slow 的值。
这样一来时间复杂度为 ,空间复杂度为 。
解答
class Solution {public: int removeElement(vector<int> &nums, int val) { auto slow = 0;
for (auto fast = 0; fast < nums.size(); ++fast) { if (nums[fast] != val) nums[slow++] = nums[fast]; }
return slow; };};