首页 > 编程语言 >算法—链表合并问题

算法—链表合并问题

时间:2022-09-19 21:11:30浏览次数:75  
标签:null ListNode 合并 list1 tail list2 链表 算法 next

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

解法一:递归
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        if (null == list1) return list2;
        if (null == list2) return list1;
        if (list1.val < list2.val) {
            list1.next = mergeTwoLists(list1.next, list2);
            return list1;
        }
        list2.next = mergeTwoLists(list1, list2.next);
        return list2;
    }

测试

public static void main(String[] args) {
        ListNode l1 = ListNode.build(new int[]{1, 2, 4, 6});
        ListNode l2 = ListNode.build(new int[]{1, 3, 4});
        new LC_0021().mergeTwoLists(l1, l2).display();
    }
解法二:for循环+双指针
public ListNode mergeTwoLists(ListNode list1, ListNode list2) {
        ListNode res = new ListNode();
        ListNode tail = res;
        if (null == list1) return list2;
        if (null == list2) return list1;
        while (null != list1 && null != list2) {
            if (list1.val < list2.val) {
                tail.next = list1;
                list1 = list1.next;
            } else {
                tail.next = list2;
                list2 = list2.next;
            }
            tail = tail.next;
        }
        if (null != list1) tail.next = list1;
        if (null != list2) tail.next = list2;
        return res.next;
    }

 

 

标签:null,ListNode,合并,list1,tail,list2,链表,算法,next
From: https://www.cnblogs.com/dork-h/p/16709084.html

相关文章

  • Sql:多行合并一行以及多条数据取时间最早的那条
    有两个导数据的需求,1、一张表里面每一个订单号可能对应多条数据,每个单号返回时间最早的那条。2、根据条件查询某个字段并按照逗号,合并在一起。表类似结构如下:  第......
  • 算法分析(时间复杂度分析)
    ①事后分析估算方法:通过给算法执行过程中添加count,运行一次count+1,直到算法结束,count的值就是此算法的时间复杂度。或利用函数库自带的计时器函数,如算法前......
  • 算法通用模板讲解
    作用:1.作论文—数据—程序进行实现;2.程序多种多样,需要一个通用的模板;3.关键:通用的地方是什么?4.算法之间的共同点与不同点; 算法的模板:1.参数设置:(1......
  • 02-基于锚框的检测算法
                                            ......
  • 图像算法工程师和图像算法测试工程师工作职责【杭州多测师】【杭州多测师_王sir】
    工作职责1、设计图像测试方案,协助开发进行图像效果调试与验证;2、撰写图像测试报告;3、进行图像评测与竞品分析;4、根据需求进行测试图像样本采集与筛选。5、熟悉常见图像算法......
  • 数据结构与算法【Java】07---树结构基础部分
    前言数据data结构(structure)是一门研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码。要学习好数据结构就......
  • 力扣92(java&python)-反转链表Ⅱ(中等)
    题目:给你单链表的头指针head和两个整数 left和right,其中 left<=right。请你反转从位置left到位置right的链表节点,返回反转后的链表。示例1:输入:head=......
  • 阶梯计费算法
      如上图,电费计费规则,算法如下:$rules=[330=>[0,100],300=>[100,300],280=>[300,500],220=>[500,1000],150=>[1000,2000],80=>......
  • PHP 数组合并的几种方式
    <details><summary>点击查看代码</summary>```1.array_merge()函数将一个或多个数组合并为一个数组,也可以用于重置数组键名array_merge()官方文档:https://......
  • 13 从磁盘读取数据页到Buffer Pool的时候,free链表有什么用?
    1.数据库启动的时候,是如何初始化BufferPool的?数据库一启动就会按照你设置的BufferPool的大小,在操作系统里分配一块内存区域,作为BufferPool内存区域当内存区域申请完毕......