题解 | #草原牛群集合#
草原牛群集合
https://www.nowcoder.com/practice/6fc74519ff9c44288dbcec5db7345ded
考察的知识点:双指针;
解答方法分析:
- 首先,定义两个指针i和j,分别指向数组的开头和末尾。
- 使用while循环遍历数组,循环条件是i <= j。
- 在循环中,判断当前位置的元素是否与目标值val相等。如果相等,将尾元素值赋给当前位置的元素,即nums[i] = nums[j],同时将j指针向前移动一位。如果不相等,将i指针向后移动一位。
- 重复执行步骤3,直到i > j。
- 返回i的值作为剩余元素的数量。
所用编程语言:C++;
完整编程代码:↓
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param val int整型 * @return int整型 */ int remove_cows(vector<int>& nums, int val) { int n = nums.size(); int i = 0; int j = n - 1; while (i <= j) { if (nums[i] == val) { nums[i] = nums[j]; j--; } else { i++; } } return i; } };