mirror of
https://github.com/youngyangyang04/leetcode-master.git
synced 2025-07-06 23:28:29 +08:00
add java recursion version of 203
This commit is contained in:
@ -337,6 +337,37 @@ public ListNode removeElements(ListNode head, int val) {
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
|
递归
|
||||||
|
|
||||||
|
```java
|
||||||
|
/**
|
||||||
|
* 时间复杂度 O(n)
|
||||||
|
* 空间复杂度 O(n)
|
||||||
|
* @param head
|
||||||
|
* @param val
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
class Solution {
|
||||||
|
public ListNode removeElements(ListNode head, int val) {
|
||||||
|
if (head == null) {
|
||||||
|
return head;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 假设 removeElements() 返回后面完整的已经去掉val节点的子链表
|
||||||
|
// 在当前递归层用当前节点接住后面的子链表
|
||||||
|
// 随后判断当前层的node是否需要被删除,如果是,就返回
|
||||||
|
// 也可以先判断是否需要删除当前node,但是这样条件语句会比较不好想
|
||||||
|
head.next = removeElements(head.next, val);
|
||||||
|
if (head.val == val) {
|
||||||
|
return head.next;
|
||||||
|
}
|
||||||
|
return head;
|
||||||
|
|
||||||
|
// 实际上就是还原一个从尾部开始重新构建链表的过程
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
### Python:
|
### Python:
|
||||||
|
|
||||||
```python
|
```python
|
||||||
|
Reference in New Issue
Block a user