Skip to content

Commit 389f0d3

Browse files
committed
feat: update solutions to lc problem: No.0027
No.0027.Remove Element
1 parent 588bde3 commit 389f0d3

File tree

8 files changed

+133
-135
lines changed

8 files changed

+133
-135
lines changed

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

+53-47
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,16 @@ for (int i = 0; i < len; i++) {
6565

6666
<!-- 这里可写通用的实现逻辑 -->
6767

68+
**方法一:一次遍历**
69+
70+
我们用变量 $k$ 记录当前不等于 $val$ 的元素个数。
71+
72+
遍历数组 $nums$,如果当前元素 $x$ 不等于 $val$,则将 $x$ 赋值给 $nums[k]$,并将 $k$ 自增 $1$。
73+
74+
最后返回 $k$ 即可。
75+
76+
时间复杂度 $O(n)$,空间复杂度 $O(1)$。其中 $n$ 为数组 $nums$ 的长度。
77+
6878
<!-- tabs:start -->
6979

7080
### **Python3**
@@ -74,13 +84,12 @@ for (int i = 0; i < len; i++) {
7484
```python
7585
class Solution:
7686
def removeElement(self, nums: List[int], val: int) -> int:
77-
cnt, n = 0, len(nums)
78-
for i in range(n):
79-
if nums[i] == val:
80-
cnt += 1
81-
else:
82-
nums[i - cnt] = nums[i]
83-
return n - cnt
87+
k = 0
88+
for x in nums:
89+
if x != val:
90+
nums[k] = x
91+
k += 1
92+
return k
8493
```
8594

8695
### **Java**
@@ -90,14 +99,13 @@ class Solution:
9099
```java
91100
class Solution {
92101
public int removeElement(int[] nums, int val) {
93-
int cnt = 0, n = nums.length;
94-
for (int i = 0; i < n; ++i) {
95-
if (nums[i] == val)
96-
++cnt;
97-
else
98-
nums[i - cnt] = nums[i];
102+
int k = 0;
103+
for (int x : nums) {
104+
if (x != val) {
105+
nums[k++] = x;
106+
}
99107
}
100-
return n - cnt;
108+
return k;
101109
}
102110
}
103111
```
@@ -108,18 +116,32 @@ class Solution {
108116
class Solution {
109117
public:
110118
int removeElement(vector<int>& nums, int val) {
111-
int cnt = 0, n = nums.size();
112-
for (int i = 0; i < n; ++i) {
113-
if (nums[i] == val)
114-
++cnt;
115-
else
116-
nums[i - cnt] = nums[i];
119+
int k = 0;
120+
for (int x : nums) {
121+
if (x != val) {
122+
nums[k++] = x;
123+
}
117124
}
118-
return n - cnt;
125+
return k;
119126
}
120127
};
121128
```
122129
130+
### **Go**
131+
132+
```go
133+
func removeElement(nums []int, val int) int {
134+
k := 0
135+
for _, x := range nums {
136+
if x != val {
137+
nums[k] = x
138+
k++
139+
}
140+
}
141+
return k
142+
}
143+
```
144+
123145
### **JavaScript**
124146

125147
```js
@@ -129,45 +151,29 @@ public:
129151
* @return {number}
130152
*/
131153
var removeElement = function (nums, val) {
132-
let cnt = 0;
133-
const n = nums.length;
134-
for (let i = 0; i < n; ++i) {
135-
if (nums[i] == val) ++cnt;
136-
else nums[i - cnt] = nums[i];
137-
}
138-
return n - cnt;
139-
};
140-
```
141-
142-
### **Go**
143-
144-
```go
145-
func removeElement(nums []int, val int) int {
146-
cnt, n := 0, len(nums)
147-
for i := 0; i < n; i++ {
148-
if (nums[i] == val) {
149-
cnt++
150-
} else {
151-
nums[i - cnt] = nums[i]
154+
let k = 0;
155+
for (const x of nums) {
156+
if (x !== val) {
157+
nums[k++] = x;
152158
}
153159
}
154-
return n - cnt
155-
}
160+
return k;
161+
};
156162
```
157163

158164
### **Rust**
159165

160166
```rust
161167
impl Solution {
162168
pub fn remove_element(nums: &mut Vec<i32>, val: i32) -> i32 {
163-
let mut len = 0;
169+
let mut k = 0;
164170
for i in 0..nums.len() {
165171
if nums[i] != val {
166-
nums[len] = nums[i];
167-
len += 1;
172+
nums[k] = nums[i];
173+
k += 1;
168174
}
169175
}
170-
len as i32
176+
k as i32
171177
}
172178
}
173179
```

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

+43-47
Original file line numberDiff line numberDiff line change
@@ -72,28 +72,26 @@ It does not matter what you leave beyond the returned k (hence they are undersco
7272
```python
7373
class Solution:
7474
def removeElement(self, nums: List[int], val: int) -> int:
75-
cnt, n = 0, len(nums)
76-
for i in range(n):
77-
if nums[i] == val:
78-
cnt += 1
79-
else:
80-
nums[i - cnt] = nums[i]
81-
return n - cnt
75+
k = 0
76+
for x in nums:
77+
if x != val:
78+
nums[k] = x
79+
k += 1
80+
return k
8281
```
8382

8483
### **Java**
8584

8685
```java
8786
class Solution {
8887
public int removeElement(int[] nums, int val) {
89-
int cnt = 0, n = nums.length;
90-
for (int i = 0; i < n; ++i) {
91-
if (nums[i] == val)
92-
++cnt;
93-
else
94-
nums[i - cnt] = nums[i];
88+
int k = 0;
89+
for (int x : nums) {
90+
if (x != val) {
91+
nums[k++] = x;
92+
}
9593
}
96-
return n - cnt;
94+
return k;
9795
}
9896
}
9997
```
@@ -104,18 +102,32 @@ class Solution {
104102
class Solution {
105103
public:
106104
int removeElement(vector<int>& nums, int val) {
107-
int cnt = 0, n = nums.size();
108-
for (int i = 0; i < n; ++i) {
109-
if (nums[i] == val)
110-
++cnt;
111-
else
112-
nums[i - cnt] = nums[i];
105+
int k = 0;
106+
for (int x : nums) {
107+
if (x != val) {
108+
nums[k++] = x;
109+
}
113110
}
114-
return n - cnt;
111+
return k;
115112
}
116113
};
117114
```
118115
116+
### **Go**
117+
118+
```go
119+
func removeElement(nums []int, val int) int {
120+
k := 0
121+
for _, x := range nums {
122+
if x != val {
123+
nums[k] = x
124+
k++
125+
}
126+
}
127+
return k
128+
}
129+
```
130+
119131
### **JavaScript**
120132

121133
```js
@@ -125,45 +137,29 @@ public:
125137
* @return {number}
126138
*/
127139
var removeElement = function (nums, val) {
128-
let cnt = 0;
129-
const n = nums.length;
130-
for (let i = 0; i < n; ++i) {
131-
if (nums[i] == val) ++cnt;
132-
else nums[i - cnt] = nums[i];
133-
}
134-
return n - cnt;
135-
};
136-
```
137-
138-
### **Go**
139-
140-
```go
141-
func removeElement(nums []int, val int) int {
142-
cnt, n := 0, len(nums)
143-
for i := 0; i < n; i++ {
144-
if (nums[i] == val) {
145-
cnt++
146-
} else {
147-
nums[i - cnt] = nums[i]
140+
let k = 0;
141+
for (const x of nums) {
142+
if (x !== val) {
143+
nums[k++] = x;
148144
}
149145
}
150-
return n - cnt
151-
}
146+
return k;
147+
};
152148
```
153149

154150
### **Rust**
155151

156152
```rust
157153
impl Solution {
158154
pub fn remove_element(nums: &mut Vec<i32>, val: i32) -> i32 {
159-
let mut len = 0;
155+
let mut k = 0;
160156
for i in 0..nums.len() {
161157
if nums[i] != val {
162-
nums[len] = nums[i];
163-
len += 1;
158+
nums[k] = nums[i];
159+
k += 1;
164160
}
165161
}
166-
len as i32
162+
k as i32
167163
}
168164
}
169165
```
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
class Solution {
22
public:
33
int removeElement(vector<int>& nums, int 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];
4+
int k = 0;
5+
for (int x : nums) {
6+
if (x != val) {
7+
nums[k++] = x;
8+
}
109
}
11-
return n - cnt;
10+
return k;
1211
}
1312
};
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
func removeElement(nums []int, val int) int {
2-
cnt, n := 0, len(nums)
3-
for i := 0; i < n; i++ {
4-
if (nums[i] == val) {
5-
cnt++
6-
} else {
7-
nums[i - cnt] = nums[i]
8-
}
9-
}
10-
return n - cnt
2+
k := 0
3+
for _, x := range nums {
4+
if x != val {
5+
nums[k] = x
6+
k++
7+
}
8+
}
9+
return k
1110
}
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
11
class Solution {
22
public int removeElement(int[] nums, int val) {
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];
3+
int k = 0;
4+
for (int x : nums) {
5+
if (x != val) {
6+
nums[k++] = x;
7+
}
98
}
10-
return n - cnt;
9+
return k;
1110
}
1211
}

solution/0000-0099/0027.Remove Element/Solution.js

+6-6
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
* @return {number}
55
*/
66
var removeElement = function (nums, val) {
7-
let cnt = 0;
8-
const n = nums.length;
9-
for (let i = 0; i < n; ++i) {
10-
if (nums[i] == val) ++cnt;
11-
else nums[i - cnt] = nums[i];
7+
let k = 0;
8+
for (const x of nums) {
9+
if (x !== val) {
10+
nums[k++] = x;
11+
}
1212
}
13-
return n - cnt;
13+
return k;
1414
};
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
class Solution:
22
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
3+
k = 0
4+
for x in nums:
5+
if x != val:
6+
nums[k] = x
7+
k += 1
8+
return k

0 commit comments

Comments
 (0)