前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法-合并两个有序链表

算法-合并两个有序链表

作者头像
Fisherman渔夫
发布2019-07-31 14:49:41
1.1K0
发布2019-07-31 14:49:41
举报
文章被收录于专栏:渔夫渔夫

版权声明: https://blog.csdn.net/li_xunhuan/article/details/90142458

题目: 将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。

示例:

输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4

代码语言:javascript
复制
代码1:
class Solution {
public ListNode mergeTwoLists(ListNode l1, ListNode l2) {
    if(l1==null||l2==null)
        return null; 
    ListNode dummyHead =new ListNode(0);
    ListNode cur = dummyHead;
    while(l1!=null&&l2!=null){
        if(l1.val<=l2.val){
        cur.next=l1;
        cur=cur.next;
        l1=l1.next;
        }else{
       cur.next=l2;
        cur=cur.next;
        l2=l2.next;
        }
    }
    if(l1==null)
        cur.next=l2;
    if(l2==null)
        cur.next=l1;
    return dummyHead.next;

}

}

分析: 1.注意我们对于链表中的结点我们没有必要去新建一个与当前结点相同的过来,然后对于合并结果链表进行赋值,因为这违反了结点的本质:不连续的内存单元;多创建结点无疑在空间复杂度上不优。要说唯一的缺点就是这里是把原来链表结构破坏了

在这里插入图片描述
在这里插入图片描述

2.对于链表运算中加一个dummyHead可以进行把头节点作为普通结点一样来处理,不同于数组在开头多加一个元素会造成返回的数组多了一个元素,链表中结点的不连续性真的很好用 3.dummyHead的好处还在于单向链表中头节点一直都是已知的就是为dummyHead.next

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年05月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档