题解 | #草原上的牛群分布#
草原上的牛群分布
https://www.nowcoder.com/practice/25752634aa444758843eed6ff227703a
知识点:数组,双指针
由于数组是有序的,对于重新分布后的数组长度很容易求得,只需要确保相邻的相同元素个数不超过三个即可,要想在不产生额外空间的情况下重新组合数组,就需要使用双指针的思想,一个指针指向应该放置的位置,另一个指针向后搜索,以跳过超出三个的后续元素。
具体来讲,使用一个val变量保存当前元素值,一个count变量统计当前元素出现的次数,若超过三次,则跳过该元素,若出现新元素,则将val值修改为新元素,count置零。
Java题解如下:
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param nums int整型一维数组 * @return int整型 */ public int remove_duplicates_v3 (int[] nums) { // write code here int n = nums.length; if(n == 0) { return 0; } int val = nums[0]; int count = 0; int index = 0; for(int i = 0; i < n; i++) { if(val == nums[i] && count > 2) { continue; }else if(val != nums[i]){ val = nums[i]; count = 0; } count++; nums[index++] = nums[i]; } return index; } }