题解 | #草原上的牛群#
草原上的牛群
https://www.nowcoder.com/practice/0661aa40ac8e48f4906df7aa24c3db90
考察的知识点:双指针;
解答方法分析:
- 首先,在给定的整型向量nums中,定义两个指针:lastIndex和i。lastIndex表示已经遍历过的不同元素的最后位置,i表示当前遍历的元素的位置。
- 初始化变量count为1,表示至少有一个不同的元素。
- 在循环中,从数组的第二个元素开始遍历(i从1开始),最后一个元素(i < n)。
- 每次遍历时,判断位置的元素(nums[i])是否与已经遍历过的不同元素的最后位置(nums[lastIndex])相等。如果相等,则说明当前元素与之前的元素相同,不计入不同元素的个数。如果不相等,则将当前元素放入不同元的最后位置(nums[++lastIndex] = nums[i]),并将count的值加1,表示出现了一个新的不同元素。
- 循环结束后,返回count作为不同元素的个数。
所用编程语言:C++;
完整编程代码:↓
class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型vector * @return int整型 */ int remove_duplicates(vector<int>& nums) { int n = nums.size(); if (n == 0) return 0; int count = 1; int lastIndex = 0; for (int i = 1; i < n; i++) { if (nums[i] != nums[lastIndex]) { nums[lastIndex] = nums[i]; count++; } } return count; } };