当前位置: 首页 > news >正文

力扣算法ing(29 / 100)

3.16 21.合并两个有序链表

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

示例 1:

输入:l1 = [1,2,4], l2 = [1,3,4]
输出:[1,1,2,3,4,4]

示例 2:

输入:l1 = [], l2 = []
输出:[]

示例 3:

输入:l1 = [], l2 = [0]
输出:[0]

我的思路:

双指针+新建链表

1 2 4

     *

1 3 4

     *

如果相等取第一个

1

1 < 2

1 1 

2 < 3

1 1 2

3 < 4

1 1 2 3

4 = 4

1 1 2 3 4 

while(l1!==null && l2 !== null)

我的代码:

解答错误
function mergeTwoLists(list1: ListNode | null, list2: ListNode | null): ListNode | null {
    // 双指针
    let l1 = list1;
    let l2 = list2;
    const newList = new ListNode;
    let cur = newList;
    while(l1!== null && l2 !== null){
        if(l1.val === l2.val){
            cur.next = l1;
            l1 = l1.next;
        }else if(l1.val < l2.val){
             cur.next = l1;
            l1 = l1.next;
        }else if(l1.val > l2.val){
             cur.next = l2;
            l2 = l2.next;
        }
        cur = cur.next;
    }
    return newList;
};
莫名多出来了一个0,返回不应该只返回newList

我的代码:

function mergeTwoLists(list1: ListNode | null, list2: ListNode | null): ListNode | null {
    // 双指针
    let l1 = list1;
    let l2 = list2;
    const newList = new ListNode;
    let cur = newList;
    while(l1!== null && l2 !== null){
        if(l1.val === l2.val){
            cur.next = l1;
            l1 = l1.next;
        }else if(l1.val < l2.val){
             cur.next = l1;
            l1 = l1.next;
        }else if(l1.val > l2.val){
             cur.next = l2;
            l2 = l2.next;
        }
        cur = cur.next;
    }
    return newList.next;
};
解答错误,只考虑了l1和l2是相同的长度,应该还要考虑剩余下来的

正确代码:

function mergeTwoLists(list1: ListNode | null, list2: ListNode | null): ListNode | null {
    // 双指针
    let l1 = list1;
    let l2 = list2;
    const newList = new ListNode;
    let cur = newList;
    while(l1!== null && l2 !== null){
        if(l1.val === l2.val){
            cur.next = l1;
            l1 = l1.next;
        }else if(l1.val < l2.val){
             cur.next = l1;
            l1 = l1.next;
        }else if(l1.val > l2.val){
             cur.next = l2;
            l2 = l2.next;
        }
        cur = cur.next;
    }
        if(l1 != null){
            cur.next = l1;
        }else if(l2 != null){
            cur.next = l2
        }
    return newList.next;
};

相关文章:

  • 蓝桥杯好题推荐---前缀和
  • 生活中的可靠性小案例11:窗户把手断裂
  • ClientAbortException问题分析
  • Nginx配置+虚拟主机
  • RabbitMQ延迟消息
  • python学智能算法(八)|决策树
  • 解决 openeuler 系统 docker 下载慢,docker 镜像加速
  • HTML、CSS
  • 电子元器件——电感参数与选型
  • C++学习内存管理
  • Mysql连接---语言连接和图形化界面
  • Chrome/Edge浏览器离线安装插件全攻略:CRX/ZIP文件手动安装教程
  • 深度探索DeepSeek部署的安全底线
  • C++博客分享
  • 从零开始开发纯血鸿蒙应用之无框截图
  • python和devops
  • 卷积神经网络(知识点)
  • js中堆和栈
  • Python贪吃蛇小游戏
  • 矩阵幂(矩阵k次幂)
  • 做网站时如何去掉网站横条/青岛百度网站排名优化
  • 网站建设用cms/市场监督管理局官网
  • 二维码生成短链接/seo程序专员
  • 做网站需要的技能/网站的网站建设
  • 网站里的动画效果图/2023年小学生简短小新闻
  • 制作动态网站教程/网站编辑怎么做