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

剑指 Offer 25. 合并两个排序的链表

剑指 Offer 25. 合并两个排序的链表

难度:easy\color{Green}{easy}easy


题目描述

输入两个递增排序的链表,合并这两个链表并使新链表中的节点仍然是递增排序的。

示例1:

输入:1->2->4, 1->3->4
输出:1->1->2->3->4->4

限制:

0<=链表长度<=10000 <= 链表长度 <= 10000<=链表长度<=1000

注意:本题与主站 21 题相同:https://leetcode-cn.com/problems/merge-two-sorted-lists/


算法

(线性合并) O(n)

  1. 建立头结点的保护结点 dummy ,设置 cur 指针指向 dummy
  2. 若当前 l1 指针指向的结点的值 vall2 指针指向的结点的值 val 小,则令 curnext 指针指向 l1,且 l1 后移;否则指向 l2,且 l2 后移。
  3. 然后 cur 指针按照上一部设置好的位置后移。
  4. 循环以上步骤直到 l1l2 为空。
  5. 将剩余的 l1l2 接到 cur 指针后边。

C++ 代码

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     ListNode *next;*     ListNode(int x) : val(x), next(NULL) {}* };*/
class Solution {
public:ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) {auto dummy = new ListNode(-1);auto cur = dummy;while (l1 && l2) {if (l1->val < l2->val) {cur->next = l1;l1 = l1->next;} else {cur->next = l2;l2 = l2->next;}cur = cur->next;}if (l1) cur->next = l1;if (l2) cur->next = l2;return dummy->next;}
};

http://www.lryc.cn/news/21565.html

相关文章:

  • 顿悟日记(一)
  • 前端卷算法系列(二)
  • 网络应用之HTTP响应报文
  • 常见的CSS技巧
  • 算法进阶-动态规划
  • python的读写操作
  • Mybatis中添加、查询、修改、删除
  • C++---线性dp---传纸条(每日一道算法2023.2.26)
  • 浅谈 C/C++ 的输入输出
  • 【计算机三级网络技术】 第二篇 中小型系统总体规划与设计
  • Boosting Crowd Counting via Multifaceted Attention之人群密度估计实践
  • python之面向对象编程
  • 常见前端基础面试题(HTML,CSS,JS)(七)
  • 产业链金风控基本逻辑
  • Java高级点的知识
  • MyBatis - 05 - 封装SqlSessionUtil工具类(用于获取SqlSession对象)并测试功能
  • Java中BIO、NIO和AIO的区别和应用场景
  • Python安装教程(附带安装包)
  • 华为OD机试用Python实现 -【信号发射和接收】(2023-Q1 新题)
  • Springboot整合 Thymeleaf增删改查一篇就够了
  • BigScience bloom模型
  • Squid服务的缓存概念
  • Hadoop YARN
  • 使用 Macrobenchmark 测试 Android 应用性能
  • 【django】django-simpleui配置后,后台显示空白页解决方法
  • 【035】基于Vue的电商推荐管理系统(含源码数据库、超详细论文)
  • 【c++】模板1—函数模板
  • windows10 wsl子系统固定ip启动分配网卡法
  • ARM+Linux日常开发笔记
  • 在线文档技术-编辑器篇