递归算法
如何理解递归算法
- 相信递归
- 小例子验证
比如leetcode206:
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
示例 1:

1 | 输入:head = [1,2,3,4,5] |
示例 2:

1 | 输入:head = [1,2] |
示例 3:
1 | 输入:head = [] |
提示:
- 链表中节点的数目范围是
[0, 5000] -5000 <= Node.val <= 5000
代码如下
1 | /** |
1、相信递归
明确函数reverseList的意义:表示当链表的下一个节点起,都是反转好的,我该怎么处理?
也就是当执行完成ListNode last = reverseList(head.next);之后,last就是一个反转好的链表;
2、小例子验证
当得到一个反转好的链表之后,我该怎么处理?
如下:
1 | // 表示下个节点起的链表都是已经反转好的 |
- 第一步:现将当前节点链到反转链表的后面,切记不能写成
last.next= head,因为last是反转链表的头,并不是尾; - 第二步:当前节点与原链表进行断开;
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 青柠!
评论


















































