26 合并有序链表 | 去重排序链表(LeetCode 21 | 83)
发布时间
阅读量:
阅读量
整合两个有序链表](https://leetcode-cn.com/problems/merge-two-sorted-lists/)
问题描述
用于将两个升序链表拼接成一个新的升序链表后返回该结果。新生成的链表由将第一个和第二个输入链表的所有节点依次拼接而成。
解题思路
我们最先考虑的方法是逐一扫描每一个属于L1的节点,并根据其属性值在对应的列表中找到合适的位置进行插入操作。为了达到这一目标目的,我们需要在列表L2头部添加一个辅助节点作为起始标记,并将其数值设定为比所有节点最小值低一个单位以确保正确性。然而目前尚未能够将其完整地转化为代码形式
以下来自官方题解:
迭代法:
创建一个哨兵节点 prehead 用于最终返回结果。
维护 prev 指针变量。
在每次循环中将 prev.next 指向当前 l1 和 l2 结点中值较小的那个。
依次比较 l1 和 l2 的结点值较小者,并更新 prev 直至任一链表为空为止。
最终将未完全遍历的链表连接到 prehead 后面完成操作。
class Solution {
public:
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {
ListNode* preHead = new ListNod
全部评论 (0)
还没有任何评论哟~
