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

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

链表篇

/**
 * 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);
    }
}

 


http://www.kler.cn/news/343175.html

相关文章:

  • 【含文档】基于Springboot+Vue的小区家政服务预约平台(含源码+数据库+lw)
  • CST软件优化超表面--- 偏振片- 线圆极化转换,天线阵任务,远场算轴比AR
  • 学习之偏函数
  • 数据挖掘学习笔记:朴素贝叶斯 | Python复现
  • 搬砖10、Python 图形用户界面和游戏开发
  • java:pdfbox 3.0 去除扫描版PDF中文本水印
  • 电子取证新视角:Windows系统中文用户输入痕迹信息提取方法研究与实现
  • 使用Qt Creator创建项目
  • 腾讯云SDK用量统计
  • SpringBoot开发——整合Actuator监控和管理Spring Boot 应用
  • vuex安装报错
  • v-html里面的标签设置样式没有用怎么办?
  • 尚硅谷rabbitmq 2024第30-33节 死信队列 答疑
  • Linux:进程调度算法和进程地址空间
  • No.9 笔记 | PHP学习指南:从入门到精通的要点总结
  • 关于Integer和int的拆箱和装箱
  • HiRT | 异步控制策略,告别VLA时延问题
  • 【RPC】—Thrift协议 VS Protobuf
  • StringEntity 用于将字符串内容作为 HTTP 请求实体(请求体)
  • docker+mysql创建用户名密码_docker里面的mysql 更换密码