LeetCode(21)合并两个有序链表
今天是小呆刷题的第7天,今天的题目是:力扣(LeetCode)的第21题,合并两个有序链表
题目要求
将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
1 |
|
提示:
- 两个链表的节点数目范围是
[0, 50]
-100 <= Node.val <= 100
l1
和l2
均按非递减顺序排列
解题思路
这道题,5分钟内我没写出来。思路其实是有的,就是比较两个链表的头节点,把小的拿出来放前面,然后去比对剩下的两个链表,依次类推,但是问题是,思路有,但不知道该怎么写,这其实也是我刷题过程中最难受的。看了题解,用递归比较好实现。
- 比较两个链表节点的val值,将值较小的节点往前排
- 用值较小的节点的next节点,与另一个链表的节点比较,依次类比
- 两个链表的任意一方到达尾部,直接返回另一方即可
具体过程用gif图辅助理解一下:
1 |
|
小结
递归,在日常的开发当中也会用到,比如生成一个tree
树,看来递归算法的使用场景还是很多的。要强化练习才行啊~
引用
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 小呆&小萌的情侣博客!
评论