题解 | #草原牛群集合#
草原牛群集合
https://www.nowcoder.com/practice/6fc74519ff9c44288dbcec5db7345ded
知识点:
双指针/数组/原地
分析:
不额外增加数组,在原数组的基础上进行删除
可以考虑使用双指针方法
首先使用两个指针指向数组的首元素,这里要清楚两个指针分别的作用是什么,i指针的作用是用来判断是否要进行元素删除,我们称为主指针,那么j指针,j指针就是辅助i指针完成移除操作的指针。
在i指针进行遍历,从首元素遍历至尾元素,如果i指针指向的元素不是要删除的元素,那么将i指针指向的值赋给j指针,并让j指针往后移动一个,然后i指针也往后移动一个。
当整个数组遍历结束,j指针指向的位置就是新数组的结尾,故返回它就是整个数组的长度
编程语言:
C++
完整代码:
int remove_cows(vector<int>& nums, int val) { int i = 0,j = 0; while(i < nums.size()){ if(nums[i] != val){ nums[j++] = nums[i]; } i++; } return j }