Merge pull request #2818 from donghuanjie/master

707代码规范化,添加部分comments; 203添加了java版本的递归
This commit is contained in:
程序员Carl
2024-12-15 09:14:58 +08:00
committed by GitHub
2 changed files with 94 additions and 65 deletions

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