题目:
给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素最多出现两次,返回移除后数组的新长度。
示例:
输入:nums = [0,0,1,1,1,1,2,3,3]
输出:7
代码:
public class Test26 {
public int removeDuplicates(int[] nums) {
if(nums.length<2){
return nums.length;
}
int j = 0;
int size=1;
Stack<Integer> temp = new Stack<>();
temp.push(nums[j]);
for (int i = 1; i <nums.length; i++) {
if (temp.peek()!=nums[i]) {
temp.push(nums[i]);
size=1;
nums[++j]=nums[i];
}else {
if (size<2){
nums[++j]=nums[i];
size++;
}else{
size++;
}
}
}
return j++;
}
}
本文介绍了一种在排序数组中删除重复元素的算法,确保每个元素最多出现两次。通过使用堆栈跟踪当前元素,该算法能有效地在原地修改数组并返回新的长度。示例代码展示了如何实现这一功能。
168万+

被折叠的 条评论
为什么被折叠?



