Skip to content

Commit 1b15c50

Browse files
committed
feat: add solutions to leetcode problem: No.0027
1 parent 923c07b commit 1b15c50

File tree

7 files changed

+108
-62
lines changed

7 files changed

+108
-62
lines changed

README.md

+2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252

5353
### 数组
5454

55+
- [移除元素](/solution/0000-0099/0027.Remove%20Element/README.md)
56+
- [移动零](/solution/0200-0299/0283.Move%20Zeroes/README.md)
5557
- [数组中重复的数字](/lcof/面试题03.%20数组中重复的数字/README.md)
5658
- [旋转数组](/solution/0100-0199/0189.Rotate%20Array/README.md)
5759
- [螺旋矩阵](/solution/0000-0099/0054.Spiral%20Matrix/README.md)

README_EN.md

+2
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ Complete solutions to [LeetCode](https://leetcode-cn.com/problemset/all/), [LCOF
5252

5353
### Arrays
5454

55+
- [Remove Element](/solution/0000-0099/0027.Remove%20Element/README_EN.md)
56+
- [Move Zeroes](/solution/0200-0299/0283.Move%20Zeroes/README_EN.md)
5557
- [Rotate Array](/solution/0100-0199/0189.Rotate%20Array/README_EN.md)
5658
- [Spiral Matrix](/solution/0000-0099/0054.Spiral%20Matrix/README_EN.md)
5759
- [3Sum](/solution/0000-0099/0015.3Sum/README_EN.md)

solution/0000-0099/0027.Remove Element/README.md

+40-1
Original file line numberDiff line numberDiff line change
@@ -64,15 +64,54 @@ for (int i = 0; i < len; i++) {
6464
<!-- 这里可写当前语言的特殊实现逻辑 -->
6565

6666
```python
67-
67+
class Solution:
68+
def removeElement(self, nums: List[int], val: int) -> int:
69+
cnt, n = 0, len(nums)
70+
for i in range(n):
71+
if nums[i] == val:
72+
cnt += 1
73+
else:
74+
nums[i - cnt] = nums[i]
75+
return n - cnt
6876
```
6977

7078
### **Java**
7179

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

7482
```java
83+
class Solution {
84+
public int removeElement(int[] nums, int val) {
85+
int cnt = 0, n = nums.length;
86+
for (int i = 0; i < n; ++i) {
87+
if (nums[i] == val) {
88+
++cnt;
89+
} else {
90+
nums[i - cnt] = nums[i];
91+
}
92+
}
93+
return n - cnt;
94+
}
95+
}
96+
```
7597

98+
### **C++**
99+
100+
```cpp
101+
class Solution {
102+
public:
103+
int removeElement(vector<int>& nums, int val) {
104+
int cnt = 0, n = nums.size();
105+
for (int i = 0; i < n; ++i) {
106+
if (nums[i] == val) {
107+
++cnt;
108+
} else {
109+
nums[i - cnt] = nums[i];
110+
}
111+
}
112+
return n - cnt;
113+
}
114+
};
76115
```
77116
78117
### **...**

solution/0000-0099/0027.Remove Element/README_EN.md

+40-1
Original file line numberDiff line numberDiff line change
@@ -77,13 +77,52 @@ for (int i = 0; i &lt; len; i++) {
7777
### **Python3**
7878

7979
```python
80-
80+
class Solution:
81+
def removeElement(self, nums: List[int], val: int) -> int:
82+
cnt, n = 0, len(nums)
83+
for i in range(n):
84+
if nums[i] == val:
85+
cnt += 1
86+
else:
87+
nums[i - cnt] = nums[i]
88+
return n - cnt
8189
```
8290

8391
### **Java**
8492

8593
```java
94+
class Solution {
95+
public int removeElement(int[] nums, int val) {
96+
int cnt = 0, n = nums.length;
97+
for (int i = 0; i < n; ++i) {
98+
if (nums[i] == val) {
99+
++cnt;
100+
} else {
101+
nums[i - cnt] = nums[i];
102+
}
103+
}
104+
return n - cnt;
105+
}
106+
}
107+
```
86108

109+
### **C++**
110+
111+
```cpp
112+
class Solution {
113+
public:
114+
int removeElement(vector<int>& nums, int val) {
115+
int cnt = 0, n = nums.size();
116+
for (int i = 0; i < n; ++i) {
117+
if (nums[i] == val) {
118+
++cnt;
119+
} else {
120+
nums[i - cnt] = nums[i];
121+
}
122+
}
123+
return n - cnt;
124+
}
125+
};
87126
```
88127
89128
### **...**
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,14 @@
11
class Solution {
22
public:
33
int removeElement(vector<int>& nums, int val) {
4-
int len = nums.size();
5-
if(len < 1)return 0;
6-
auto iter = find(nums.begin(),nums.end(),val);
7-
while(iter != nums.end())
8-
{
9-
nums.erase(iter);
10-
iter = find(nums.begin(),nums.end(),val);
4+
int cnt = 0, n = nums.size();
5+
for (int i = 0; i < n; ++i) {
6+
if (nums[i] == val) {
7+
++cnt;
8+
} else {
9+
nums[i - cnt] = nums[i];
10+
}
1111
}
12-
len = nums.size();
13-
14-
return len;
15-
}
16-
};
17-
--------------------------------------------------
18-
class Solution {
19-
public:
20-
int removeElement(vector<int>& nums, int val) {
21-
int len = nums.size();
22-
if(len < 1)return 0;
23-
24-
int i = 0;
25-
while(i < len)
26-
{
27-
if(nums[i] == val){
28-
nums[i] = nums[len - 1];
29-
len--;
30-
}
31-
else i++;
32-
}
33-
34-
return len;
12+
return n - cnt;
3513
}
3614
};
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,13 @@
11
class Solution {
22
public int removeElement(int[] nums, int val) {
3-
if(nums == null || nums.length == 0) {
4-
return 0;
5-
}
6-
7-
int end = nums.length - 1;
8-
int i = 0;
9-
while(i <= end) {
10-
if(nums[i] == val) {
11-
nums[i] = nums[end];
12-
end--;
13-
}
14-
else {
15-
i++;
3+
int cnt = 0, n = nums.length;
4+
for (int i = 0; i < n; ++i) {
5+
if (nums[i] == val) {
6+
++cnt;
7+
} else {
8+
nums[i - cnt] = nums[i];
169
}
1710
}
18-
return end + 1;
19-
11+
return n - cnt;
2012
}
2113
}
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,9 @@
1-
#仿照0026思路-20ms
2-
class Solution(object):
3-
def removeElement(self, nums, val):
4-
if not nums:
5-
return 0
6-
7-
newtail = 0
8-
9-
for i in range(0, len(nums)):
10-
if nums[i] != val:
11-
nums[newtail] = nums[i]
12-
newtail += 1
13-
14-
return newtail
15-
1+
class Solution:
2+
def removeElement(self, nums: List[int], val: int) -> int:
3+
cnt, n = 0, len(nums)
4+
for i in range(n):
5+
if nums[i] == val:
6+
cnt += 1
7+
else:
8+
nums[i - cnt] = nums[i]
9+
return n - cnt

0 commit comments

Comments
 (0)