# 移除元素 以下错误的选项是? ## aop ### before ```cpp #include using namespace std; ``` ### after ```cpp int main() { Solution sol; int res; vector nums{0, 1, 2, 2, 3, 0, 4, 2}; res = sol.removeElement(nums, 2); cout << res; return 0; } ``` ## 答案 ```cpp class Solution { public: int removeElement(vector &nums, int val) { int count = 0; for (int i = 0; i < nums.size(); i++) { if (nums[i] != val) { nums[count++] = nums[i]; } } return count; } }; ``` ## 选项 ### A ```cpp class Solution { public: int removeElement(vector &nums, int val) { int i = 0; for (int j = 0; j < nums.size(); j++) { if (nums[j] != val) { nums[i] = nums[j]; i++; } } return i; } }; ``` ### B ```cpp class Solution { public: int removeElement(vector &nums, int val) { int n = nums.size(); int i = 0; while (i < n) { if (nums[i] == val) { nums[i] = nums[n - 1]; n--; } else i++; } return n; } }; ``` ### C ```cpp class Solution { public: int removeElement(vector &nums, int val) { int tmp_len = nums.size(); if (tmp_len == 0) return 0; else { for (int ii = 1; ii < nums.size(); ii++) { if (nums[ii] == val) tmp_len = tmp_len - 1; } for (int i = 0; i < nums.size(); i++) { if (nums[i] == val) { for (int j = i; j < nums.size(); j++) { if (nums[j] != val) { nums[j] = nums[i]; } } } } return tmp_len; } } }; ```