add java recursion version of 203

This commit is contained in:
donghuanjie
2024-11-01 01:12:34 -07:00
parent b3c79d8484
commit cc1cdb07db

View File

@ -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