题解 | #草原上的牛群分布#
草原上的牛群分布
https://www.nowcoder.com/practice/25752634aa444758843eed6ff227703a
考察知识点:数组、双指针
题目分析:
使用left指针指向下一个要放入的位置,用right向后进行遍历,遍历到满足条件的元素就覆盖到left中。
当nums的元素个数大于2时,可以通过判断前一个数是否与当前数相同来判断是否将cnt加1。在这一判断之后,若满足题意条件,即连续的牛群个数不大于3,那么就将right指向的数覆盖到left中。因为第一个数一定满足条件,right可以从第二个数开始,覆盖时left也从第二个数开始。
所用编程语言:C++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param nums int整型vector
* @return int整型
*/
int remove_duplicates_v3(vector<int>& nums) {
// write code here
int left = 0, right = 1;
int cnt = 1;
int size = nums.size();
if (size == 0) return 0;
while (right < size) {
if (nums[right] == nums[right - 1]) {
if (cnt < 3) {
nums[++left] = nums[right];
cnt++;
}
} else {
nums[++left] = nums[right];
cnt = 1;
}
right++;
}
return left + 1;
}
};
查看1道真题和解析