Skip to content

Commit b6355c0

Browse files
committed
feat: update solutions to leetcode problem: No.0080
1 parent 813162f commit b6355c0

File tree

7 files changed

+156
-50
lines changed

7 files changed

+156
-50
lines changed

.docsifytopdfrc.js

-7
This file was deleted.

solution/0000-0099/0080.Remove Duplicates from Sorted Array II/README.md

+66-1
Original file line numberDiff line numberDiff line change
@@ -47,22 +47,87 @@ for (int i = 0; i < len; i++) {
4747

4848
<!-- 这里可写通用的实现逻辑 -->
4949

50+
从数组下标 1 开始遍历数组。
51+
52+
用计数器 `cnt` 记录当前数字重复出现的次数,`cnt` 的最小计数为 0;用 `cur` 记录新数组下个待覆盖的元素位置。
53+
54+
遍历时,若当前元素 `nums[i]` 与上个元素 `nums[i-1]` 相同,则计数器 +1,否则计数器重置为 0。如果计数器小于 2,说明当前元素 `nums[i]` 可以添加到新数组中,即:`nums[cur] = nums[i]`,同时 `cur++`
55+
56+
遍历结果,返回 `cur` 值即可。
57+
5058
<!-- tabs:start -->
5159

5260
### **Python3**
5361

5462
<!-- 这里可写当前语言的特殊实现逻辑 -->
5563

5664
```python
57-
65+
class Solution:
66+
def removeDuplicates(self, nums: List[int]) -> int:
67+
n = len(nums)
68+
cnt, cur = 0, 1
69+
for i in range(1, n):
70+
if nums[i] == nums[i - 1]:
71+
cnt += 1
72+
else:
73+
cnt = 0
74+
if cnt < 2:
75+
nums[cur] = nums[i]
76+
cur += 1
77+
return cur
5878
```
5979

6080
### **Java**
6181

6282
<!-- 这里可写当前语言的特殊实现逻辑 -->
6383

6484
```java
85+
class Solution {
86+
public int removeDuplicates(int[] nums) {
87+
int cnt = 0, cur = 1;
88+
for (int i = 1; i < nums.length; ++i) {
89+
if (nums[i] == nums[i - 1]) ++cnt;
90+
else cnt = 0;
91+
if (cnt < 2) nums[cur++] = nums[i];
92+
}
93+
return cur;
94+
}
95+
}
96+
```
97+
98+
### **C++**
99+
100+
```cpp
101+
class Solution {
102+
public:
103+
int removeDuplicates(vector<int>& nums) {
104+
int n = nums.size();
105+
int cnt = 0, cur = 1;
106+
for (int i = 1; i < n; ++i) {
107+
if (nums[i] == nums[i - 1]) ++cnt;
108+
else cnt = 0;
109+
if (cnt < 2) nums[cur++] = nums[i];
110+
}
111+
return cur;
112+
}
113+
};
114+
```
65115
116+
### **C#**
117+
118+
```cs
119+
public class Solution {
120+
public int RemoveDuplicates(int[] nums) {
121+
int cnt = 0, cur = 1;
122+
for (int i = 1; i < nums.Length; ++i)
123+
{
124+
if (nums[i] == nums[i - 1]) ++cnt;
125+
else cnt = 0;
126+
if (cnt < 2) nums[cur++] = nums[i];
127+
}
128+
return cur;
129+
}
130+
}
66131
```
67132

68133
### **...**

solution/0000-0099/0080.Remove Duplicates from Sorted Array II/README_EN.md

+58-1
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,76 @@ for (int i = 0; i &lt; len; i++) {
7373
### **Python3**
7474

7575
```python
76-
76+
class Solution:
77+
def removeDuplicates(self, nums: List[int]) -> int:
78+
n = len(nums)
79+
cnt, cur = 0, 1
80+
for i in range(1, n):
81+
if nums[i] == nums[i - 1]:
82+
cnt += 1
83+
else:
84+
cnt = 0
85+
if cnt < 2:
86+
nums[cur] = nums[i]
87+
cur += 1
88+
return cur
7789
```
7890

7991
### **Java**
8092

8193
```java
94+
class Solution {
95+
public int removeDuplicates(int[] nums) {
96+
int cnt = 0, cur = 1;
97+
for (int i = 1; i < nums.length; ++i) {
98+
if (nums[i] == nums[i - 1]) ++cnt;
99+
else cnt = 0;
100+
if (cnt < 2) nums[cur++] = nums[i];
101+
}
102+
return cur;
103+
}
104+
}
105+
```
82106

107+
### **C++**
108+
109+
```cpp
110+
class Solution {
111+
public:
112+
int removeDuplicates(vector<int>& nums) {
113+
int n = nums.size();
114+
int cnt = 0, cur = 1;
115+
for (int i = 1; i < n; ++i) {
116+
if (nums[i] == nums[i - 1]) ++cnt;
117+
else cnt = 0;
118+
if (cnt < 2) nums[cur++] = nums[i];
119+
}
120+
return cur;
121+
}
122+
};
83123
```
84124
125+
### **C#**
126+
127+
```cs
128+
public class Solution {
129+
public int RemoveDuplicates(int[] nums) {
130+
int cnt = 0, cur = 1;
131+
for (int i = 1; i < nums.Length; ++i)
132+
{
133+
if (nums[i] == nums[i - 1]) ++cnt;
134+
else cnt = 0;
135+
if (cnt < 2) nums[cur++] = nums[i];
136+
}
137+
return cur;
138+
}
139+
}
140+
85141
### **...**
86142
87143
```
88144

89145
```
90146
91147
<!-- tabs:end -->
148+
```
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,13 @@
11
class Solution {
22
public:
33
int removeDuplicates(vector<int>& nums) {
4-
if(nums.empty())return 0;
5-
size_t len = nums.size();
6-
if(len == 1)return 1;
7-
8-
auto iter = nums.begin();
9-
iter++;
10-
int k = 1;
11-
while(iter != nums.end()){
12-
if(*iter == *(iter-1))k++;
13-
else k = 1;
14-
15-
if(k==3){
16-
nums.erase(iter);
17-
k--;
18-
}
19-
else {
20-
iter++;
21-
}
4+
int n = nums.size();
5+
int cnt = 0, cur = 1;
6+
for (int i = 1; i < n; ++i) {
7+
if (nums[i] == nums[i - 1]) ++cnt;
8+
else cnt = 0;
9+
if (cnt < 2) nums[cur++] = nums[i];
2210
}
23-
24-
len = nums.size();
25-
return len;
11+
return cur;
2612
}
2713
};
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,12 @@
11
public class Solution {
22
public int RemoveDuplicates(int[] nums) {
3-
if (nums.Length <= 2) return nums.Length;
4-
var i = 0;
5-
var j = 1;
6-
while (j < nums.Length)
3+
int cnt = 0, cur = 1;
4+
for (int i = 1; i < nums.Length; ++i)
75
{
8-
if (nums[i] != nums[j] || i == 0 || nums[i] == nums[j] && nums[i - 1] != nums[j])
9-
{
10-
nums[++i] = nums[j];
11-
}
12-
++j;
6+
if (nums[i] == nums[i - 1]) ++cnt;
7+
else cnt = 0;
8+
if (cnt < 2) nums[cur++] = nums[i];
139
}
14-
return i + 1;
10+
return cur;
1511
}
1612
}
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
11
class Solution {
22
public int removeDuplicates(int[] nums) {
3-
if (nums.length<3) return nums.length;
4-
int pos = 1,flag = 1,last = nums[0];
5-
for(int i = 1;i<nums.length;i++){
6-
if (nums[i] == last) flag++;
7-
else {
8-
flag = 1;
9-
last = nums[i];
10-
}
11-
if (flag <= 2) nums[pos++] = last;
3+
int cnt = 0, cur = 1;
4+
for (int i = 1; i < nums.length; ++i) {
5+
if (nums[i] == nums[i - 1]) ++cnt;
6+
else cnt = 0;
7+
if (cnt < 2) nums[cur++] = nums[i];
128
}
13-
return pos;
9+
return cur;
1410
}
1511
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
class Solution:
2+
def removeDuplicates(self, nums: List[int]) -> int:
3+
n = len(nums)
4+
cnt, cur = 0, 1
5+
for i in range(1, n):
6+
if nums[i] == nums[i - 1]:
7+
cnt += 1
8+
else:
9+
cnt = 0
10+
if cnt < 2:
11+
nums[cur] = nums[i]
12+
cur += 1
13+
return cur

0 commit comments

Comments
 (0)