热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

剑指Offer017合并两个排序的链表

链接牛客OJ:合并两个排序的链表九度OJ:http:ac.jobdu.comproblem.php?pid1519GitHub代码:017

链接


牛客OJ:合并两个排序的链表

九度OJ:http://ac.jobdu.com/problem.php?pid=1519

GitHub代码: 017-合并两个排序的链表

CSDN题解:剑指Offer–017-合并两个排序的链表


牛客OJ九度OJCSDN题解GitHub代码
合并两个排序的链表1519-合并两个排序的链表剑指Offer–017-合并两个排序的链表017-合并两个排序的链表


您也可以选择回到目录-剑指Offer–题集目录索引

其实这道题跟LeetCode上一道题是一样的

LeetCodet题解–21. Merge Two Sorted Lists(合并两个排序好的链表)

当然他还有很多变种,比如说两个链表扩展成为K个的时候

LeetCodet题解–23. Merge k Sorted Lists(合并K个已排序的链表)


题意

题目描述

输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。

样例输入

1 3 5 7 9
2 4

样例输出

1 2 3 4 5 7 9


常规写法

思路很简单,用两个指针同步遍历两个链表,每次找到小的那个插入到新的链表中

#include using namespace std;// 调试开关
#define __tmain main#ifdef __tmain#define debug cout#else#define debug 0 && cout#endif // __tmain#ifdef __tmain
struct ListNode
{
public :int val;struct ListNode *next;
// ListNode(int x)
// :val(x), next(NULL)
// {
// }
};#endif // __tmainclass Solution
{
public:ListNode* Merge(ListNode *pLeft, ListNode *pRight){if(pLeft &#61;&#61; NULL){debug <<"left list is NULL" <return pRight;}else if(pRight &#61;&#61; NULL){debug <<"right list is NULL" <return pLeft;}ListNode *left &#61; pLeft;ListNode *right &#61; pRight;// 先生成头结点ListNode *head &#61; NULL;if(left->val val){head &#61; left;left &#61; left->next;debug "in list" <else{head &#61; right;right &#61; right->next;debug "in list" <// 遍历两个链表ListNode *curr &#61; head;while(left !&#61; NULL && right !&#61; NULL){// 每次找到一个小的加入新的链表debug <<"left &#61; " <val <<", right &#61; " <val <if(left->val val){debug <val <<"in list" <next &#61; left;curr &#61; curr->next;left &#61; left->next;}else{debug <val <<"in list" <next &#61; right;curr &#61; curr->next;right &#61; right->next;}}// 处理较长链表的剩余部分if(left !&#61; NULL){curr->next &#61; left;}else{curr->next &#61; right;}return head;}
};int __tmain( )
{ListNode left, right[3];left.val &#61; 5;left.next &#61; NULL;right[0].val &#61; 1;right[0].next &#61; &right[1];right[1].val &#61; 2;right[1].next &#61; &right[2];right[2].val &#61; 4;right[2].next &#61; NULL;Solution solu;ListNode *head &#61; solu.Merge(&left, right);while(head !&#61; NULL){cout next;}return 0;
}

递归实现

其实思路一样&#xff0c;只是由于每次添加节点&#xff0c;都是机械性地重复工作&#xff0c;因此可以用递归来实现


class Solution
{
public:ListNode* Merge(ListNode *pLeft, ListNode *pRight){if(pLeft &#61;&#61; NULL){debug <<"left list is NULL" <return pRight;}else if(pRight &#61;&#61; NULL){debug <<"right list is NULL" <return pLeft;}ListNode *head &#61; NULL;if(pLeft->val val){head &#61; pLeft;head->next &#61; Merge(pLeft->next, pRight);}else{head &#61; pRight;head->next &#61; Merge(pLeft, pRight->next);}return head;}
};


推荐阅读
  • 线段树,注 ... [详细]
  • iOS 百度地图使用指南:基本定位与地理编码
    本文详细介绍如何在 iOS 应用中集成百度地图,实现基本的地图定位和地理编码功能。配置详情请参考官方文档:http://developer.baidu.com/map/index.php?title=iossdk ... [详细]
  • 本文整理了一份基础的嵌入式Linux工程师笔试题,涵盖填空题、编程题和简答题,旨在帮助考生更好地准备考试。 ... [详细]
  • 驱动程序的基本结构1、Windows驱动程序中重要的数据结构1.1、驱动对象(DRIVER_OBJECT)每个驱动程序会有唯一的驱动对象与之对应,并且这个驱动对象是在驱 ... [详细]
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • ABP框架是ASP.NET Boilerplate的简称,它不仅是一个开源且文档丰富的应用程序框架,还提供了一套基于领域驱动设计(DDD)的最佳实践架构模型。本文将详细介绍ABP框架的特点、项目结构及其在Web API优先架构中的应用。 ... [详细]
  • 本文介绍了如何使用线段树实现区间加法和区间查询操作,包括详细的代码实现和解释。 ... [详细]
  • 最近遇到了一道关于哈夫曼树的编程题目,需要在下午之前完成。题目要求设计一个哈夫曼编码和解码系统,能够反复显示和处理多个项目,直到用户选择退出。希望各位大神能够提供帮助。 ... [详细]
  • hdu4539郑厂长系列故事——排兵布阵http:acm.hdu.edu.cnshowproblem.php?pid4539问题描述:给你一个n行m列的0-1矩阵,0表示不 ... [详细]
  • MyBatisCodeHelperPro 2.9.3 最新在线免费激活方法
    MyBatisCodeHelperPro 2.9.3 是一款强大的代码生成工具,适用于多种开发环境。本文将介绍如何在线免费激活该工具,帮助开发者提高工作效率。 ... [详细]
  • 在iOS开发中,多线程技术的应用非常广泛,能够高效地执行多个调度任务。本文将重点介绍GCD(Grand Central Dispatch)在多线程开发中的应用,包括其函数和队列的实现细节。 ... [详细]
  • 申请地址:https://developer.apple.com/appstore/contact/?topic=expedite 常见申请理由:1. 我们即将发布新产品,这是一个媒体活动,我们无法承担任何风险,因此在多个方面努力提升应用质量。 ... [详细]
  • 阿里云 Aliplayer高级功能介绍(八):安全播放
    如何保障视频内容的安全,不被盗链、非法下载和传播,阿里云视频点播已经有一套完善的机 ... [详细]
  • 本文介绍了如何使用Postman构建和发送HTTP请求,包括四个主要部分:方法(Method)、URL、头部(Headers)和主体(Body)。特别强调了Body部分的重要性,并详细说明了不同类型的请求体。 ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
author-avatar
不会做饭的我
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有