知识点
模拟
思路
要求不能使用额外的空间,因为原数组的大小一定不小于不等于val的数量,所以可以记录一个大小sz
,每次把对应的元素放到这个位置后 sz += 1
最后遍历整个数组之后,得到的sz就是题目的要求。
时间复杂度
遍历数组的每个位置最多2次,是线性复杂度的
AC code(C++)
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param val int整型 * @return int整型 */ int remove_cows(vector<int>& nums, int val) { int sz = 0, n = nums.size(); for (int i = 0; i < n; i ++) { if (nums[i] != val) { nums[sz ++] = nums[i]; } } return sz; } };