当前位置: 首页 > 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;
};
http://www.dtcms.com/a/72280.html

相关文章:

  • 蓝桥杯好题推荐---前缀和
  • 生活中的可靠性小案例11:窗户把手断裂
  • ClientAbortException问题分析
  • Nginx配置+虚拟主机
  • RabbitMQ延迟消息
  • python学智能算法(八)|决策树
  • 解决 openeuler 系统 docker 下载慢,docker 镜像加速
  • HTML、CSS
  • 电子元器件——电感参数与选型
  • C++学习内存管理
  • Mysql连接---语言连接和图形化界面
  • Chrome/Edge浏览器离线安装插件全攻略:CRX/ZIP文件手动安装教程
  • 深度探索DeepSeek部署的安全底线
  • C++博客分享
  • 从零开始开发纯血鸿蒙应用之无框截图
  • python和devops
  • 卷积神经网络(知识点)
  • js中堆和栈
  • Python贪吃蛇小游戏
  • 矩阵幂(矩阵k次幂)
  • 【孟德尔随机化】Leave-one-out analysis的异常点,判断
  • 计算机网络-综合布线系统
  • JavaScript 数据类型详解:基本类型与引用类型的区别与应用
  • 2000-2022年上市公司创新数据:突破性创新和渐进性创新(含原始数据+处理代码+结果)
  • vulkanscenegraph显示倾斜模型(5.3)-相机
  • Python——代码格式
  • 1.6、Java继承、构造方法、数组
  • 案例驱动的 IT 团队管理:创新与突破之路:第一章 重构 IT 团队管理:从传统到创新-2.1.1案例:某云计算公司技术负责人的“三维评估法“
  • 深度优先搜索(DFS)剪枝技术详解与C++实现
  • Python第五章02:函数的参数和练习