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

Java算法每日一题

题目描述

将两个升序链表合并为一个新的升序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:l1 = [1,2,4], l2 = [1,3,4]输出:[1,1,2,3,4,4]

解题思路
  • 递归法:比较两个链表的头节点,取较小的节点作为当前节点,然后递归合并剩余节点;
  • 迭代法(推荐):用虚拟头节点简化边界处理,遍历两个链表,依次拼接较小的节点。
Java 代码(迭代法)
// 定义链表节点 class ListNode { int val; ListNode next; ListNode() {} ListNode(int val) { this.val = val; } ListNode(int val, ListNode next) { this.val = val; this.next = next; } } public class MergeTwoLists { public ListNode mergeTwoLists(ListNode list1, ListNode list2) { // 虚拟头节点,简化链表拼接 ListNode dummy = new ListNode(-1); ListNode curr = dummy; // 遍历两个链表,直到其中一个为空 while (list1 != null && list2 != null) { if (list1.val <= list2.val) { curr.next = list1; list1 = list1.next; } else { curr.next = list2; list2 = list2.next; } curr = curr.next; } // 拼接剩余的节点(其中一个链表可能还有未遍历的节点) curr.next = list1 == null ? list2 : list1; return dummy.next; } // 测试用例:打印链表 public static void printList(ListNode head) { while (head != null) { System.out.print(head.val + " "); head = head.next; } } public static void main(String[] args) { // 构建链表1: 1->2->4 ListNode l1 = new ListNode(1, new ListNode(2, new ListNode(4))); // 构建链表2: 1->3->4 ListNode l2 = new ListNode(1, new ListNode(3, new ListNode(4))); MergeTwoLists solution = new MergeTwoLists(); ListNode result = solution.mergeTwoLists(l1, l2); // 输出:1 1 2 3 4 4 printList(result); } }
答案解析
  • 虚拟头节点dummy的作用:避免处理 “头节点为空” 的边界情况;
  • 时间复杂度:O (m+n)(m、n 为两个链表长度),空间复杂度:O (1)。
http://www.jsqmd.com/news/379575/

相关文章:

  • 如何学习Java AI ?
  • 【毕业设计】基于Springboot的植物健康管理系统设计与实现(源码+文档+远程调试,全bao定制等)
  • flask
  • MAF快速入门(16)用户智能体交互协议AG-UI(上)
  • 详细介绍:HTTP/HTTPS 协议基础详解
  • 【毕业设计】基于web的动物救助网站(源码+文档+远程调试,全bao定制等)
  • 【计算机毕业设计案例】基于web的动物救助网站(程序+文档+讲解+定制)
  • Java毕设选题推荐:基于Springboot的智能养护植物健康管理系统设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 快来看2026市面上混合机供应商口碑排行里的潜力之选,混合机/Z型斗提机/摇摆筛/超声波振动筛,混合机直销厂家推荐排行榜 - 品牌推荐师
  • 决绝
  • 信息论与编码---离散无记忆信道的容量
  • 【计算机毕业设计案例】基于Springboot的植物生长环境植物健康管理系统设计与实现(程序+文档+讲解+定制)
  • 计算机Java毕设实战-基于Springboot的植物健康植物档案管理、智能养护提醒、病虫害管理系统设计与实现【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • Docker 安装 Python
  • 8:【Git误删】git reflog找回删除文件/ commit
  • 2026年2月分析仪供应商推荐,热门厂商排行抢先看,测厚仪/测定仪/测量仪/分析仪/扭矩仪,分析仪生产商怎么选择 - 品牌推荐师
  • 【课程设计/毕业设计】基于Springboot的植物健康温湿度、光照管理系统设计与实现【附源码、数据库、万字文档】
  • Vue.js前端框架教学之Vue 插槽,以及应用场景
  • 实用指南:AI智能体设计模式系列(八)—— 记忆管理模式
  • Docker 资源汇总
  • 2026年选试验机供应厂家,国内热门厂家攻略来袭,试验机/测厚仪/分析仪/测试仪/检测仪/测量仪,试验机销售厂家排行榜 - 品牌推荐师
  • 7:【Git撤销】reset --hard / revert / reflog 快速撤回(别删错历史)
  • 星际能量矩阵:树形 DP 的递归与非递归双解
  • Java毕设项目:基于web的动物救助网站(源码+文档,讲解、调试运行,定制等)
  • 信息论与编码篇---对称信道
  • Java毕设项目:基于Springboot的植物健康管理系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • Java毕设项目:基于Web的文物知识普及系统设计与实现(源码+文档,讲解、调试运行,定制等)
  • 《构建之法》读后感(3)
  • 【毕业设计】基于springboot的流浪动物救助系统(源码+文档+远程调试,全bao定制等)
  • 2026年Z型斗提机厂家综合实力排行,这些品牌不容错过!摇摆筛/Z型斗提机/旋振筛/无尘投料站,Z型斗提机企业推荐 - 品牌推荐师