剑指offer25.合并两个排序的链表 javascript_aminwangaa的博客-程序员秘密

技术标签: leetcode  

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:

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

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
function ListNode(val) {
    
    this.val = val;
    this.next = null;
}
/**
 * @param {ListNode} l1
 * @param {ListNode} l2
 * @return {ListNode}
 */
 // 放入数组的时候就排序
const mergeTwoLists = function(l1, l2) {
    
  let arr = []
  while (l1 && l1.val !== undefined) {
    
    arr.unshift(l1.val)
    l1 = l1.next
  }
  while (l2 && l2.val !== undefined) {
    
    if (!arr.length) {
    
      arr.push(l2.val)
    } else if (l2.val <= arr[arr.length - 1]) {
    
      arr.push(l2.val)
    } else if (l2.val >= arr[0]) {
    
      arr.unshift(l2.val)
    } else {
    
      // 条件满足 都要遍历一下数组 耗时
      for (let i = 0; i < arr.length; i++) {
    
        if (
          l2.val <= arr[i] &&
          l2.val >= arr[i + 1]
        ) {
    
          arr.splice(i + 1, 0, l2.val)
          break
        }
      }
    }
    l2 = l2.next
  }
  return arr.reduce((next, val) => ({
    val, next}), null)
};
// 最后处理数据的时候排序
const mergeTwoLists = function(l1, l2) {
    
  let arr = []
  while (l1 && l1.val != undefined) {
    
    arr.push(l1.val)
    l1 = l1.next
  }

  while (l2 && l2.val != undefined) {
    
    arr.push(l2.val)
    l2 = l2.next
  }
  arr = arr.sort((a, b) => b - a) // 排序 再处理

  return arr.reduce((next, val) => ({
    val, next}), null)
};
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/aminwangaa/article/details/114022218

智能推荐

机器学习数据的标准化(normalization)和归一化_SamWang_333的博客-程序员秘密

数据的标准化(normalization)和归一化数据的标准化(normalization)是将数据按比例缩放,使之落入一个小的特定区间。在某些比较和评价的指标处理中经常会用到,去除数据的单位限制,将其转化为无量纲的纯数值,便于不同单位或量级的指标能够进行比较和加权。*从经验上说,归一化是让不同维度之间的特征在数值上有一定比较性,可以大大提高分类器的准确性。目前数据标准化方法有多种,归结起来...

2021-2022-1 20212802《Linux内核原理与分析》第三周作业_linux第三周作业_ExNexus的博客-程序员秘密

1、实验要求完成一个简单的时间片轮转多道程序内核代码2、实验过程进入实验楼的linux环境,打开shell,输入以下代码:cd LinuxKernel/linux-3.9.4rm -rf mykernelpatch -p1 &lt; ../mykernel_for_linux3.9.4sc.patchmake allnoconfigmake #编译内核请耐心等待qemu -kernel arch/x86/boot/bzImage执行的效果如下:3、mykernel时间

Android 应用程序如何获取system权限_syste app权限_燕小飞的博客-程序员秘密

当Android应用程序用到重启系统、关闭系统、修改系统时间等功能时,需要用到system权限。本文以OKxx18平台实现重启功能的应用程序PermissionTest为例,说明获取系统权限的方法。1.首先在app工程的AndroidManifest.xml里添加(PermissionTest工程里已添加):android:shardUserId="android.uid.system"...

集宁师范附中计算机课,师大附中寒假开设青少年程序设计公益课,戳进来抢报!..._旧南的博客-程序员秘密

原标题:师大附中寒假开设青少年程序设计公益课,戳进来抢报!前不久,重庆市发布了一个重要通知,要求各中小学3~6年级要开设编程课,初中阶段均不得少于36课时,高中也要按要求开设。 哇塞哇塞,计算机编程这是以星星之火可以燎原之势蔓延啊,继浙江、北京、山东、江苏等省市后,又一个地区把编程列加入中小学课程。随着人工智能时代的来临,让孩子具备编程的基础已经是教育界的一个共识。 再来看看高校招考。近年来很多竞...

rabbitMQ 延迟队列delayed插件强制调用ReturnCallback里returnedMessage方法_returnedmessage 判断类型_教授V5的博客-程序员秘密

报错信息消息被服务器退回。msg:�� sr java.lang.Integer⠤���8 I valuexr java.lang.Number������ xp , replyCode:312. replyText:NO_ROUTE, exchange:my-mq-exchange_D, routingKey :spring-boot-routingKey_D[RabbitMQ 消息发送结果:] 成功!消息唯一标识:b58e22fb-aa2b-4eb4-b8d4-6465fc26dd40

数学题-计算相交圆的公共部分面积_Code--Dream的博客-程序员秘密

参考学长的模板;数学能力差就要看公式模板;数学知识不懂画图推一下就出来了。高三同学做这种题应该特别厉害。double abss(double a,double b) //两数作差绝对值{ return a-b>=0?(a-b):(b-a);}struct circle{ double x,y,r;} a,b;double get_dis(double x1,

随便推点

【QT C++】 保存服务端传来的base64位编码图片_象驮着的云的博客-程序员秘密

在QT中将base64编码的图片保存到本地简介:在服务端检测图片后,通过http得到base64编码的结果,保存在本地客户端。QByteArray Ret_bytearray;Ret_bytearray = QByteArray::fromBase64(image_value.toString().toLocal8Bit());QBuffer buffer(&amp;Ret_bytearray);buffer.open(QIODevice:...

MySQL在navicat上卡死_Jessica_h_j_w的博客-程序员秘密

MySQL卡死后怎么办!!!之前都是用任务管理器强制结束,直到有一次强制结束后MySQL服务器打不开了就从网上找了新方法。(1)进入MySQL命令(2)show (full) processlist,查询当前进程(3)找到卡住的那个进程后,kill 卡死进程id(4)再在Navicat中找到服务器的连接属性-高级-保持连接间隔(秒)勾选并填上自己决定合适的时间...

C++——字符串例题——487-3279(POJ1002)_McDonnell_Douglas的博客-程序员秘密

487-3279Time Limit: 2000MS Memory Limit: 65536KTotal Submissions: 285398 Accepted: 51255Description企业喜欢用容易被记住的电话号码。让电话号码容易被记住的一个办法是将它写成一个容易记住的单词或者短语。例如,你需要给滑铁卢大学打

float f = 3.4是否正确 写的非常好_全宇宙只有一个pai的博客-程序员秘密

笔试时经常会出现的一个问题,float型float f=3.4是否正确 答案:不正确。 原因:精度不准确,应该用强制类型转换,如下所示:float f=(float)3.4 或float f = 3.4f 在java里面,没小数点的默认是int,有小数点的默认是 double; 编译器可以自动向上转型,如int 转成 long 系统自动转换没有问题,因为后者精度更高 

c# 添加中文描述 给enum_C#中的枚举(Enum)你知道多少呢?_又画教育的博客-程序员秘密

枚举(Enum)定义enum关键字用于声明枚举,即一种由一组称为枚举数列表的命名常量组成的独特类型。通常情况下,最好是在命名空间内直接定义枚举,以便该命名空间中的所有类都能够同样方便地访问它。但是,还可以将枚举嵌套在类或结构中。现在的有些电商网站根据购物的积分用到的,金牌会员,银牌会员,铜牌会员.enumMemberLevel{gold,silver,copper}枚举值获取一般获取的时候包括获取...

Word 多级标题中的某一级的编号变为竖线_多级编号变成竖杠_笑轩辕的博客-程序员秘密

编辑多级列表的对话框,预览中可以看到正确的自动编号格式,导航窗也显示正确,但是在正式的文档中自动编号都是黑条