题解 | #草原牛群集合#
草原牛群集合
https://www.nowcoder.com/practice/6fc74519ff9c44288dbcec5db7345ded
知识点
双指针
思路
用i和j分别维护当前遍历到的位置以及当前放置的位置。
当nums[i]!=vals时,将其放在nums[j]处,同时j++。否则j不变。i始终保持右移。
最后数组中就去除了所有vals,并且j即为数组的大小。
代码c++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @param val int整型
* @return int整型
*/
int remove_cows(vector<int>& nums, int val) {
// write code here
int i = 0; // 指向当前要处理的元素
int j = 0; // 指向下一个要放置元素的位置
int n = nums.size();
for(int i=0;i<n;i++)
{
if (nums[i] != val) {
nums[j] = nums[i];
j++;
}
}
return j;
}
};