首页 > 编程语言 >【hot100-java】合并 K 个升序链表

【hot100-java】合并 K 个升序链表

时间:2024-10-11 13:48:56浏览次数:9  
标签:ListNode val int list1 next 链表 升序 java

链表篇

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    //先实现合并两个有序链表
    public ListNode mergeTwoLists(ListNode list1,ListNode list2){
        ListNode cur=new ListNode(0);
        //哨兵节点
        ListNode dummy=cur;
        while(list1!=null&&list2!=null){
            if(list1.val<list2.val){
                cur.next=list1;
                list1=list1.next;
            }else{
                cur.next=list2;
                list2=list2.next;
            }
            cur=cur.next;
        }
        //拼接剩余链表
        cur.next=list1!=null?list1:list2;
        return dummy.next;
    }
    
    //合并所有升序链表
    public ListNode mergeKLists(ListNode[] lists) {
       int m=lists.length;
       if(m==0){
        return null;
       }
       if(m==1){
        return lists[0];
       }
       //二分法,切成两半
       int mid=m/2;
       ListNode left=mergeKLists(java.util.Arrays.copyOfRange(lists,0,mid));
       ListNode right=mergeKLists(java.util.Arrays.copyOfRange(lists,mid,m));
       return mergeTwoLists(left,right);
    }
}

 

标签:ListNode,val,int,list1,next,链表,升序,java
From: https://blog.csdn.net/m0_73629042/article/details/142851325

相关文章

  • [Java/Spring] 深入理解 : Spring ApplicationContext
    [Java/Spring]深入理解:SpringApplicationContext1概述:ApplicationContext简介2源码分析ApplicationContextpackageorg.springframework.context;publicinterfaceApplicationContextextendsEnvironmentCapable,ListableBeanFactory,HierarchicalBeanFactor......
  • 一款Java CMS 网站管理系统,基于RuoYi-fast二次开发,网站后台采用SpringBoot + MyBati
    一款JavaCMS网站管理系统基于RuoYi-fast二次开发,网站后台采用SpringBoot+MyBatis文章目录前言一、开源地址二、环境要求三、功能亮点3.1扩展功能3.2内置功能四、安装方法4.1、拉取源码4.2、修改数据库链接配置4.3、创建数据库并导入数据4.4、配置资源上传......
  • 【Java】异常处理指南
     ......
  • 【Java 】包装类详解:从基本概念到实战技巧
     ......
  • 单链表的建立-带头结点/不带头结点的尾插法和头插法以及带头结点链表的逆置
    王道数据结构—单链表的建立#include<stdio.h>#include<stdlib.h>typedefstructLNode{ intdata; structLNode*next;}LNode,*LinkList;//带头结点尾插法建立单链表LinkListList_TailInsert(LinkList&L){ //初始化链表 L=(LNode*)malloc(sizeof(LNode)......
  • Java中的锁
    锁:实现操作的同步或者可以说对操作公共的资源进行一个限制锁的分类:1.排他锁(重点)和共享锁排他锁:获得锁资源之后那么不能对这个资源进行任何的读写操作,这些操作就会进行阻塞共享锁:获得锁资源之后,只能对这个资源进行相关的读操作不能对其进行写操作案例:就是在Mysql......
  • Android Studio添加依赖 新版 和 旧版 的添加方式(Gradle添加依赖)(Java)
    旧版的(在线添加)1找文件在项目的build.gradle文件中添加依赖(在下面的节点中添加库格式’组:名字:版本号‘)dependencies{implementation'com.example:library:1.0.0'}implementation‘组:名字:版本号’添加完成之后上方会出现如下图提示(点击现在同步)(Sy......
  • Java项目: 基于SpringBoot+mybatis+maven+vue健身房管理系统(含源码+数据库+毕业论文)
    一、项目简介本项目是一套基于SpringBoot+mybatis+maven+vue健身房管理系统包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。项目都经过严格调试,eclipse或者idea确保可以运行!该系统功能完善、界面美观、操作简单、功能齐全、管理便捷,具有很高的实际应用......
  • AI 时代就业指南:Java 程序员如何转行做大模型?
    前言在人工智能(AI)迅速发展的背景下,从传统的编程领域如Java程序员转向大模型开发是一个既充满挑战也充满机遇的过程。对于Java程序员来说,这也是一个实现职业转型、提升薪资待遇的绝佳机遇。一、明确大模型概念简单来说,大模型就是具有大量参数和强大计算能力的人工智能模......
  • 小小初识java(29)-String小提升
    new和不new之间的区别?Stringx="OK";Stringy=newString("OK");不new的方式直接去常量池查看,如果有该单词,直接从常量池里面取出来使用,如果没有的话,在常量池里面缓存一份new的方式先在堆里面开辟,与此同时还会去常量池里面查看Stringstr=newString("AA......