移除元素

分析

这题取决于你有没有快慢指针的概念,如果有那这题相当于 1+1=21 + 1 = 2 了。

我们可以取两个指针,慢指针用于逐个读取元素,快指针在 nums[fast] = val 时跳过。 然后我们仅需返回 slow 的值。 这样一来时间复杂度为 O(N)O(N),空间复杂度为 O(1)O(1)

解答

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;
  };
};
返回文章列表