题解 | #草原上的牛群#
草原上的牛群
https://www.nowcoder.com/practice/0661aa40ac8e48f4906df7aa24c3db90
大家好,我是开车的阿Q,自动驾驶的时代已经到来,没时间解释了,快和阿Q一起上车。作为自动驾驶系统工程师,必须要有最好的C++基础,让我们来一起刷题吧。
题目考察的知识点
本题考察的知识点是如何在原数组上移除重复元素,并计算不同位置的牛群数量。
题目解答方法的文字分析
给定一个升序排列的整数数组 nums
,表示草原上不同位置的牛群。我们需要计算不同位置的牛群数量,并将数组修改为只包含这些不同的位置,顺序保持一致,然后返回草原上不同位置的牛群数量。
具体步骤如下:
- 初始化变量
count
为 1,表示不同位置的牛群数量。初始化变量current
为nums[0]
,表示当前位置。 - 遍历数组
nums
,对于每个元素nums[i]
,如果与current
不相等,则将nums[count]
设为nums[i]
,同时增加count
,并更新current
为nums[i]
。 - 返回
count
,即不同位置的牛群数量。
举例说明:假设给定数组为 nums = [1, 1, 3, 3, 5, 6]
。
- 初始化
count = 1
,current = 1
。 - 遍历数组,遇到元素与
current
不相等时,将其移动到位置count
,同时增加count
,并更新current
。 - 最后得到数组为
[1, 3, 5, 6]
,返回不同位置的牛群数量 4。
本题解析所用的编程语言 (C++)
本题解析所用的编程语言是 C++。
完整且正确的编程代码
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int remove_duplicates(vector<int>& nums) { if (nums.empty()) { return 0; } int count = 1; // 不同位置的牛群数量 int current = nums[0]; // 当前位置 for (int i = 1; i < nums.size(); i++) { if (nums[i] != current) { nums[count] = nums[i]; // 将不同位置的牛群移动到正确的位置 count++; // 增加不同位置的牛群数量 current = nums[i]; // 更新当前位置 } } return count; // 返回不同位置的牛群数量 } };
阿Q的题解 文章被收录于专栏
阿Q秋招刷过的题