删除排序数组中的重复数字Ⅱ

题意

根据 删除排序数组中的重复数字 中的题意,跟进 ”删除重复数字“,如果可以允许出现两次重复将如何处理?

样例

给出数组 A = [1,1,2,2,2,3],你的函数应该返回长度 5,此时 A = [1,1,2,2,3]

思路

这道题跟 删除排序数组中的重复数字 差不多,无非就是多判断一次,判断是否有两个连续的重复元素即可。

代码实现

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
public class Solution {
/**
* @param A: a array of integers
* @return : return an integer
*/
public int removeDuplicates(int[] nums) {
if (nums == null) {
return 0;
}

int index = 0;
int i, j;

for (i = 0; i < nums.length;) {
int now = nums[i];
for (j = i; j < nums.length; j++) {
if (nums[j] != now)
break;
if (j - i < 2) {
nums[index++] = now;
}
}
i = j;
}

return index;
}
}

原题地址

LintCode:删除排序数组中的重复数组Ⅱ

坚持原创技术分享,您的支持将鼓励我继续创作!