题目地址:
https://leetcode.com/problems/remove-element/
给定一个数组,再给定一个数字 v v v,要求将数组中等于 v v v的数删掉,保持非 v v v数字的相对顺序,返回新数组的长度。
思路是双指针,保持 n u m s [ 0 : i ] nums[0:i] nums[0:i]不等于 v v v并保持了相对顺序,同时更新即可。代码如下:
class Solution {
public:
int removeElement(vector<int>& a, int x) {
int i = 0;
for (int j = 0; j < a.size(); j++)
if (a[j] != x) a[i++] = a[j];
return i;
}
};
时间复杂度 O ( n ) O(n) O(n),空间 O ( 1 ) O(1) O(1)。