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
|
||||
|
Reference in New Issue
Block a user