题解 | #草原上的牛群分布#
草原上的牛群分布
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;
}
}
