leetcode--Remove Duplicates from Sorted Array II
2015-06-09 12:47
477 查看
Follow up for "Remove Duplicates":
What if duplicates are allowed at most twice?
For example,
Given sorted array nums =
Your function should return length =
题意:移除排序数组中的重复元素,一个元素最多出现两次
分类:数组,双指针
解法1:和leetcode--Remove Duplicates from Sorted Array一样,使用双指针,但是每次覆盖时,判断是否由两个以上重复,如果是,覆盖两次,否则覆盖一次
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;
}
}
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,
2and
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;
}
}
相关文章推荐
- 动易2006序列号破解算法公布
- ruby 数组使用教程
- C#动态调整数组大小的方法
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- 详解Lua中的数组概念知识
- Lua教程(七):数据结构详解
- Perl中的列表和数组学习笔记
- 探索PowerShell (八) 数组、哈希表(附:复制粘贴技巧)
- C#中数组初始化与数组元素复制的方法
- 解析从源码分析常见的基于Array的数据结构动态扩容机制的详解
- C#交错数组用法实例
- PowerShell数组的一些操作技巧
- C#数据结构与算法揭秘二
- C#通过yield实现数组全排列的方法
- C#数据结构揭秘一
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- Ruby简明教程之数组和Hash介绍