题解 | #草原牛群集合#
草原牛群集合
https://www.nowcoder.com/practice/6fc74519ff9c44288dbcec5db7345ded
大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
本题考察的知识点是如何在原数组上进行元素移除,同时要求空间复杂度为 O(1)。
题目解答方法的文字分析
给定一个整数数组 nums
,表示每头牛的位置坐标。还有一个整数 val
表示牧犬发出的信号。
我们的任务是移除数组中与 val
相同的元素,并返回移动后的数组以及剩余元素数量。
具体步骤如下:
- 初始化变量
count
为 0,表示剩余元素的数量。 - 遍历数组
nums
,对于每个元素nums[i]
,如果与val
不相等,则将nums[count]
设为nums[i]
,同时增加count
。 - 返回
count
,即剩余元素的数量。
举例说明:假设给定数组为 nums = [3, 5, 3, 2, 4, 3]
,val = 3
。
- 初始化
count = 0
。 - 遍历数组,遇到元素与
val
不相等时,将其移动到位置count
,同时增加count
。 - 最后得到剩余元素为
[5, 2, 4]
,返回剩余元素数量 3。
本题解析所用的编程语言 (C++)
本题解析所用的编程语言是 C++。
完整且正确的编程代码
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @param val int整型 * @return int整型 */ int remove_cows(vector<int>& nums, int val) { int count = 0; // 剩余元素的数量 for (int i = 0; i < nums.size(); i++) { if (nums[i] != val) { nums[count] = nums[i]; // 移动元素到正确的位置 count++; // 增加剩余元素的数量 } } return count; // 返回剩余元素的数量 } };
阿Q的题解 文章被收录于专栏
阿Q秋招刷过的题