Skip to content

Commit e53192c

Browse files
committed
feat: update solutions to lc problem: No.0203
No.0203.Remove Linked List Elements
1 parent c1ce865 commit e53192c

File tree

6 files changed

+175
-12
lines changed

6 files changed

+175
-12
lines changed

solution/0200-0299/0203.Remove Linked List Elements/README.md

+70-4
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class Solution:
6161
def removeElements(self, head: ListNode, val: int) -> ListNode:
6262
dummy = ListNode(-1, head)
6363
pre = dummy
64-
while pre and pre.next:
64+
while pre.next:
6565
if pre.next.val != val:
6666
pre = pre.next
6767
else:
@@ -88,7 +88,7 @@ class Solution {
8888
public ListNode removeElements(ListNode head, int val) {
8989
ListNode dummy = new ListNode(-1, head);
9090
ListNode pre = dummy;
91-
while (pre != null && pre.next != null) {
91+
while (pre.next != null) {
9292
if (pre.next.val != val) pre = pre.next;
9393
else pre.next = pre.next.next;
9494
}
@@ -118,6 +118,36 @@ public:
118118
};
119119
```
120120
121+
### **C#**
122+
123+
```cs
124+
public class Solution {
125+
public ListNode RemoveElements(ListNode head, int val) {
126+
ListNode newHead = null;
127+
ListNode newTail = null;
128+
var current = head;
129+
while (current != null)
130+
{
131+
if (current.val != val)
132+
{
133+
if (newHead == null)
134+
{
135+
newHead = newTail = current;
136+
}
137+
else
138+
{
139+
newTail.next = current;
140+
newTail = current;
141+
}
142+
}
143+
current = current.next;
144+
}
145+
if (newTail != null) newTail.next = null;
146+
return newHead;
147+
}
148+
}
149+
```
150+
121151
### **Go**
122152

123153
```go
@@ -152,10 +182,10 @@ func removeElements(head *ListNode, val int) *ListNode {
152182
*/
153183

154184
function removeElements(head: ListNode | null, val: number): ListNode | null {
155-
let dummy: ListNode = new ListNode(0, head);
185+
const dummy: ListNode = new ListNode(0, head);
156186
let cur: ListNode = dummy;
157187
while (cur.next != null) {
158-
if (cur.next.val == val) {
188+
if (cur.next.val === val) {
159189
cur.next = cur.next.next;
160190
} else {
161191
cur = cur.next;
@@ -165,6 +195,42 @@ function removeElements(head: ListNode | null, val: number): ListNode | null {
165195
}
166196
```
167197

198+
### **Rust**
199+
200+
```rust
201+
// Definition for singly-linked list.
202+
// #[derive(PartialEq, Eq, Clone, Debug)]
203+
// pub struct ListNode {
204+
// pub val: i32,
205+
// pub next: Option<Box<ListNode>>
206+
// }
207+
//
208+
// impl ListNode {
209+
// #[inline]
210+
// fn new(val: i32) -> Self {
211+
// ListNode {
212+
// next: None,
213+
// val
214+
// }
215+
// }
216+
// }
217+
impl Solution {
218+
pub fn remove_elements(head: Option<Box<ListNode>>, val: i32) -> Option<Box<ListNode>> {
219+
let mut dummy = Box::new(ListNode { val: 0, next: head });
220+
let mut cur = &mut dummy;
221+
while let Some(mut node) = cur.next.take() {
222+
if node.val == val {
223+
cur.next = node.next.take();
224+
} else {
225+
cur.next = Some(node);
226+
cur = cur.next.as_mut().unwrap();
227+
}
228+
}
229+
dummy.next.take()
230+
}
231+
}
232+
```
233+
168234
### **...**
169235

170236
```

solution/0200-0299/0203.Remove Linked List Elements/README_EN.md

+70-4
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ class Solution:
5353
def removeElements(self, head: ListNode, val: int) -> ListNode:
5454
dummy = ListNode(-1, head)
5555
pre = dummy
56-
while pre and pre.next:
56+
while pre.next:
5757
if pre.next.val != val:
5858
pre = pre.next
5959
else:
@@ -78,7 +78,7 @@ class Solution {
7878
public ListNode removeElements(ListNode head, int val) {
7979
ListNode dummy = new ListNode(-1, head);
8080
ListNode pre = dummy;
81-
while (pre != null && pre.next != null) {
81+
while (pre.next != null) {
8282
if (pre.next.val != val) pre = pre.next;
8383
else pre.next = pre.next.next;
8484
}
@@ -108,6 +108,36 @@ public:
108108
};
109109
```
110110
111+
### **C#**
112+
113+
```cs
114+
public class Solution {
115+
public ListNode RemoveElements(ListNode head, int val) {
116+
ListNode newHead = null;
117+
ListNode newTail = null;
118+
var current = head;
119+
while (current != null)
120+
{
121+
if (current.val != val)
122+
{
123+
if (newHead == null)
124+
{
125+
newHead = newTail = current;
126+
}
127+
else
128+
{
129+
newTail.next = current;
130+
newTail = current;
131+
}
132+
}
133+
current = current.next;
134+
}
135+
if (newTail != null) newTail.next = null;
136+
return newHead;
137+
}
138+
}
139+
```
140+
111141
### **Go**
112142

113143
```go
@@ -142,10 +172,10 @@ func removeElements(head *ListNode, val int) *ListNode {
142172
*/
143173

144174
function removeElements(head: ListNode | null, val: number): ListNode | null {
145-
let dummy: ListNode = new ListNode(0, head);
175+
const dummy: ListNode = new ListNode(0, head);
146176
let cur: ListNode = dummy;
147177
while (cur.next != null) {
148-
if (cur.next.val == val) {
178+
if (cur.next.val === val) {
149179
cur.next = cur.next.next;
150180
} else {
151181
cur = cur.next;
@@ -155,6 +185,42 @@ function removeElements(head: ListNode | null, val: number): ListNode | null {
155185
}
156186
```
157187

188+
### **Rust**
189+
190+
```rust
191+
// Definition for singly-linked list.
192+
// #[derive(PartialEq, Eq, Clone, Debug)]
193+
// pub struct ListNode {
194+
// pub val: i32,
195+
// pub next: Option<Box<ListNode>>
196+
// }
197+
//
198+
// impl ListNode {
199+
// #[inline]
200+
// fn new(val: i32) -> Self {
201+
// ListNode {
202+
// next: None,
203+
// val
204+
// }
205+
// }
206+
// }
207+
impl Solution {
208+
pub fn remove_elements(head: Option<Box<ListNode>>, val: i32) -> Option<Box<ListNode>> {
209+
let mut dummy = Box::new(ListNode { val: 0, next: head });
210+
let mut cur = &mut dummy;
211+
while let Some(mut node) = cur.next.take() {
212+
if node.val == val {
213+
cur.next = node.next.take();
214+
} else {
215+
cur.next = Some(node);
216+
cur = cur.next.as_mut().unwrap();
217+
}
218+
}
219+
dummy.next.take()
220+
}
221+
}
222+
```
223+
158224
### **...**
159225

160226
```

solution/0200-0299/0203.Remove Linked List Elements/Solution.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ class Solution {
1212
public ListNode removeElements(ListNode head, int val) {
1313
ListNode dummy = new ListNode(-1, head);
1414
ListNode pre = dummy;
15-
while (pre != null && pre.next != null) {
15+
while (pre.next != null) {
1616
if (pre.next.val != val) pre = pre.next;
1717
else pre.next = pre.next.next;
1818
}

solution/0200-0299/0203.Remove Linked List Elements/Solution.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ class Solution:
77
def removeElements(self, head: ListNode, val: int) -> ListNode:
88
dummy = ListNode(-1, head)
99
pre = dummy
10-
while pre and pre.next:
10+
while pre.next:
1111
if pre.next.val != val:
1212
pre = pre.next
1313
else:
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// Definition for singly-linked list.
2+
// #[derive(PartialEq, Eq, Clone, Debug)]
3+
// pub struct ListNode {
4+
// pub val: i32,
5+
// pub next: Option<Box<ListNode>>
6+
// }
7+
//
8+
// impl ListNode {
9+
// #[inline]
10+
// fn new(val: i32) -> Self {
11+
// ListNode {
12+
// next: None,
13+
// val
14+
// }
15+
// }
16+
// }
17+
impl Solution {
18+
pub fn remove_elements(head: Option<Box<ListNode>>, val: i32) -> Option<Box<ListNode>> {
19+
let mut dummy = Box::new(ListNode { val: 0, next: head });
20+
let mut cur = &mut dummy;
21+
while let Some(mut node) = cur.next.take() {
22+
if node.val == val {
23+
cur.next = node.next.take();
24+
} else {
25+
cur.next = Some(node);
26+
cur = cur.next.as_mut().unwrap();
27+
}
28+
}
29+
dummy.next.take()
30+
}
31+
}

solution/0200-0299/0203.Remove Linked List Elements/Solution.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
*/
1212

1313
function removeElements(head: ListNode | null, val: number): ListNode | null {
14-
let dummy: ListNode = new ListNode(0, head);
14+
const dummy: ListNode = new ListNode(0, head);
1515
let cur: ListNode = dummy;
1616
while (cur.next != null) {
17-
if (cur.next.val == val) {
17+
if (cur.next.val === val) {
1818
cur.next = cur.next.next;
1919
} else {
2020
cur = cur.next;

0 commit comments

Comments
 (0)