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

力扣hot100 - 21、合并两个有序链表

题目:思路一:迭代
整体思路:如上例所示,

当 l1 和 l2 都不是空链表时,判断 l1 和 l2 哪一个链表的头节点的值更小,将较小值的节点添加到结果里,当一个节点被添加到结果里之后,将对应链表中的节点向后移一位

具体实现:我们需要拿一个哨兵节点dummy 来存储后面的有序的节点(还能便于最后返回结果,return dummy.next,不然返回结果很麻烦),然后用tail来维护合并后有序节点的尾部;不断l1和l2的大小,谁小tial就指向谁,同时小的一方后移;知道一方为null;最后tail指向不为空的一方。

时间复杂度O(m+n)空间复杂度O(1)

代码:

/** * 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 dummy = new ListNode(); ListNode tail = dummy; while( list1 != null && list2 != null){ if(list1.val >= list2.val){ tail.next = list2; list2 = list2.next; }else{ tail.next = list1; list1 = list1.next; } tail = tail.next; } if( list1 != null){ tail.next = list1; } if(list2 != null){ tail.next = list2; } return dummy.next; } }
http://www.gsyq.cn/news/154382.html

相关文章:

  • STM32智能手环:心率血氧体温监测系统设计与实现
  • 什么是无代码平台?它能为企业解决什么问题?
  • 基于STM32的智能花盆系统设计与实现
  • 星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程
  • LRU缓存
  • 2025年暨南大学计算机考研复试机试真题(附 AC 代码 + 解题思路)
  • 基于SpringBoot的海洋环保小程序系统(毕业设计项目源码+文档)
  • 微信小程序uniapp-vue音乐播放器
  • 方达炬 发明一批指标
  • 微信小程序uniapp-vue英语在线学习系统每日签到打卡
  • leetcode热题岛屿数量
  • 微信小程序uniapp-vue英语学习小助手的设计
  • 基于SpringBoot的公司财务预算管理系统(毕业设计项目源码+文档)
  • HBase与Jupyter:交互式数据分析
  • 12月25日记
  • 案例:扩容数据免迁移方案
  • 为什么 Go 没有依赖注入和 Bean 机制?语言设计哲学对比 - 若
  • 昇腾 NPU 环境下 GPT-2 模型本地部署全指南(含踩坑排错)
  • 《具身智能》读书笔记
  • 大一职业规划
  • 江苏诚信的港澳台联考机构哪家专业
  • ios跟安卓出现崩溃怎么获取日志
  • 性能测试中关于硬件环境的测试
  • 学长亲荐8个AI论文工具,研究生轻松搞定开题报告!
  • ubuntu虚拟机mysql数据库忘记密码
  • Linux中级の自动运维工具Ansible基础
  • 【图数据库与知识图谱入门】3.5 知识图谱的典型应用场景
  • Java 反射机制解析:从基础概念到框架实践 - 教程
  • 149_尚硅谷_数组应用实例(1)
  • PCIe-Tag Rule(2)