题解 | #草原上的牛群分布#
草原上的牛群分布
https://www.nowcoder.com/practice/25752634aa444758843eed6ff227703a
int remove_duplicates_v3(vector<int>& nums) {
// write code here
if (nums.empty()) {
return 0;
}
int j = 0; // 新数组的尾部指针
int count = 1; // 当前元素的重复次数
for (int i = 1; i < nums.size(); i++) {
if (nums[i] == nums[j]) {
// 当前元素与新数组的最后一个元素相同
count++;
if (count <= 3) {
// 重复次数不超过三次时,可以保留
j++;
}
} else {
// 当前元素与新数组的最后一个元素不同
count = 1; // 重置重复次数
j++;
nums[j] = nums[i];
}
}
return j + 1; // 返回新数组的长度
}
};
使用两个指针来追踪数组的状态。一个指针 i 用于迭代数组,另一个指针 j 用于指向新数组的尾部,确保每个元素最多重复三次。
查看6道真题和解析