80.删除排序数组中的重复项Ⅱ

题目描述

题解

双指针

一个指针负责向右遍历, 一个指针指向需要被修改的位置.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int removeDuplicates(int[] nums) {
int len = nums.length;
if (len<=2){
return 1en;
}

int i = 2;
for (int j= 2;j<len;j++){
if (nums[j]!=nums[i-2]){
nums[i]= nums[j];
i++;
}
}
return i;
}

此类题的模板

这道题明确了重复的数字个数不能超过2个, 如果是K个, 代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public int removeDuplicates(int[] nums) {
int len = nums.length;
if (len<=k){
return len;
}

int i = k;
for (int j= k;j<len;j++){
if (nums[j]!=nums[i-k]){
nums[i]= nums[j];
i++;
}
}
return i;
}
-------------本文结束感谢您的阅读-------------
可以请我喝杯奶茶吗