LeetCode | 7. Merge Two Sorted Lists 合并两个有序列表
Merge Two Sorted Lists 是 LeetCode 算法题库中的第二十一道题,难度为 Easy,题目地址为:https://leetcode.com/problems/merge-two-sorted-lists/
1. 问题描述
将两个升序列表合并为一个新的升序列表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
2. 解题思路
ListNode的定义是:
本题主要是有两种思路:递归和迭代
递归,将两个列表的第一个节点进行比较,之后再用较小的那个列表剩下的节点组成的列表与较大的列表进行比较,最后输出重新组合成的那个较小的列表。比如,如果
list1[0] < list2[0]
,list1[0] + merge(list1[1:], list2)
迭代,判断两个列表的第一个节点的大小,将较小的值添加到结果中,此时该较小值所在的列表的节点向后移一位,继续来比较。这里需要用到两个指针
prev
和next
,如果第一个列表的当前节点小于第二个列表,便把第一个列表当前的节点接在prev
节点后面,并将第一个列表的指针向后移一位。
3. 知识点
这里最大的知识点是对「递归」概念的理解,即函数在运行时调用自己。
第二个知识点是「指针」。
4. 代码
Python 实现
递归
迭代
C# 实现
递归
迭代
版权声明: 本文为 InfoQ 作者【Puran】的原创文章。
原文链接:【http://xie.infoq.cn/article/5c6066e8b4f212a3617e1d4d8】。文章转载请联系作者。
评论