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

产品推广活动策划方案优化师培训

产品推广活动策划方案,优化师培训,金融互助网站开发,网站备案 主办单位合并两个有序链表 https://leetcode.cn/problems/merge-two-sorted-lists/ 描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 示例 1 输入:l1 [1,2,4], l2 [1,3,4] 输出:[1,1,2,3,4,4]示例 …

合并两个有序链表

  • https://leetcode.cn/problems/merge-two-sorted-lists/

描述

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

示例 1



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

示例 2

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

示例 3

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

提示

  • 两个链表的节点数目范围是 [0, 50]
  • -100 <= Node.val <= 100
  • l1 和 l2 均按 非递减顺序 排列

算法实现

1 )遍历两个链表,依次比较存入结果链表

/*** Definition for singly-linked list.* class ListNode {*     val: number*     next: ListNode | null*     constructor(val?: number, next?: ListNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.next = (next===undefined ? null : next)*     }* }*/function mergeTwoLists(list1: ListNode | null, list2: ListNode | null): ListNode | null {const res = new ListNode();let p = res; // 用于遍历 res 的指针let p1 = list1; // 用于遍历 list1 的指针,不影响原 list1let p2 = list2; // 用于遍历 list2 的指针,不影响原 list2// 遍历两个链表,并接入值,有序的接入// 遍历链表必须有指针,不停的执行 指针=指针.nextwhile(p1 && p2) {if(p1.val < p2.val) {p.next = p1; // 结果链表添加最小元素p1 = p1.next; // p1这个链表后移一位} else {p.next = p2; // 结果链表添加最小元素p2 = p2.next; // 后移}p = p.next; // 结果链表 后移}// 接着考虑 p1或p2 其中一个空,一个不空的情况p1 && (p.next = p1);p2 && (p.next = p2);return res.next;
};
  • 解题思路
    • 与归并排序中合并两个有序数组很相似
    • 将数组替换成链表即可
  • 解题步骤
    • 新建一个新链表,作为返回结果
    • 用指针遍历两个有序链表,并比较两个链表的当前节点
    • 较小者先接入新链表,并将指针后移一步
    • 链表遍历结束,返回新链表
  • 时间复杂度:O(n)
    • O(m+n)
  • 空间复杂度:O(1)
    • 新建链表是一个指针,存储的是常量

2 )基于递归

/*** Definition for singly-linked list.* class ListNode {*     val: number*     next: ListNode | null*     constructor(val?: number, next?: ListNode | null) {*         this.val = (val===undefined ? 0 : val)*         this.next = (next===undefined ? null : next)*     }* }*/function mergeTwoLists(list1: ListNode | null, list2: ListNode | null): ListNode | null {if (!list1) return list2;if (!list2) return list1;// list1 大于 list2的值if (list1.val < list2.val) {list1.next = mergeTwoLists(list1.next, list2);return list1;}// list1 小于等于 list2的值list2.next = mergeTwoLists(list1, list2.next);return list2;
};
  • 这个思路就是递归比较和合并,没啥要说的
  • 时间复杂度:O(n)
    • O(m+n)
  • 空间复杂度:O(n)
    • 使用了 m+n 个调用栈
    • O(m+n)
http://www.mmbaike.com/news/53748.html

相关文章:

  • 阿坝州网站制作网站开通
  • 政府部门网站建设方案成人短期培训能学什么
  • 政府信息门户网站解决方案快速排名怎么做
  • 如何做网站教程网站收录入口申请查询
  • 武汉有那些做网站设计的公司浙江seo
  • 导入表格数据做地图网站今日新闻网
  • 有哪些网站做二手房好的公司网站建设要多少钱
  • 网站推广营销联系方式什么是seo站内优化
  • 手机网站建设市场报价湘潭网站定制
  • win7用本地文件做网站模板国内重大新闻10条
  • 高端建站用什么软件如何去做网络营销
  • 新浪云虚拟主机做电影网站百度添加到桌面
  • 深圳建设网站top028seo研究协会网app
  • 做网站挣钱吗百度网页入口
  • b站是什么平台武汉网站开发公司
  • 用买的服务器 做网站上海发布最新情况
  • 金华网站制作费用百度一下app
  • 没有页面的网站怎么做性能测试上海b2b网络推广外包
  • wordpress忘记密码如何重新安装淘宝seo软件
  • 猫猫出品wordpress高端seo服务
  • 宣城做w网站的公司网站制作基本流程
  • 珠海建设企业网站的公司站长友情链接平台
  • 开淘宝店和做网站有什么区别北京网站优化排名推广
  • 个人网页设计背景图片素材网络推广seo怎么做
  • 做影视网站有什么风险合肥网络推广培训学校
  • 做网站哪一家比较好百度搜索优化怎么做
  • 广告设计公司组织架构南通百度网站快速优化
  • 注册的空间网站免费发布推广的平台有哪些
  • 网站开发项目简单描述单页应用seo如何解决
  • 高邑做网站2021年最为成功的营销案例