您的位置:首页 > 理论基础 > 数据结构算法

leetcode--Remove Duplicates from Sorted Array II

2015-06-09 12:47 405 查看
Follow up for "Remove Duplicates":

What if duplicates are allowed at most twice?

For example,

Given sorted array nums =
[1,1,1,2,2,3]
,

Your function should return length =
5
, with the first five elements ofnums being
1
,
1
,
2
,
2
and
3
. It doesn't matter what you leave beyond the new length.

题意:移除排序数组中的重复元素,一个元素最多出现两次

分类:数组,双指针

解法1:和leetcode--Remove Duplicates from Sorted Array一样,使用双指针,但是每次覆盖时,判断是否由两个以上重复,如果是,覆盖两次,否则覆盖一次

public class Solution {
public int removeDuplicates(int[] nums) {
int cur = Integer.MIN_VALUE;
int count = 0;
int sum = 0;
for(int i=0;i<nums.length;i++){
if(cur==nums[i]){
if(count==1){
nums[sum] = nums[i];
count++;
sum++;
}else{
count = 0;
cur = nums[i];
}
}else{
cur = nums[i];
nums[sum] = nums[i];
sum++;
count = 1;
}
}
return sum;
}

}

public class Solution {
public int removeDuplicates(int[] nums) {
int count = 0;
int len = nums.length;
if(len==0) return 0;
int pre = 0;
int cur = 0;
while(cur<len){
if(nums[cur]==nums[pre]){
cur++;
}else{
nums[count++] = nums[pre];
if(cur-pre>=2){
nums[count++] = nums[pre];
}
pre = cur;
}
}
nums[count++] = nums[cur-1];
if(cur-pre>=2){
nums[count++] = nums[cur-1];
}
return count;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息