排序算法刷题【leetcode88题目:合并两个有序数组、leetcode21:合并两个有序链表】

news2024/9/20 9:03:18

一、合并两个有序数组

        题目比较简单,使用归并排序里面的同样的操作就可以,代码如下所示

#include <iostream>
#include <vector>
using namespace std;

/* leetcode88题:合并两个有序数组 */
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int p1 = m - 1, p2 = n - 1, p3 = m + n - 1;
        while (p1 != -1 || p2 != -1)
        {
            //注意“||”两端的条件最终得到拷贝数组中的元素的动作是相同的才可以
            if (p1 == -1 || p2 != -1 && (nums1[p1] <= nums2[p2]))   
            {
                nums1[p3--] = nums2[p2--];
            }
            else
            {
                nums1[p3--] = nums1[p1--];
            }
        }
        return;
    }
};

int main()
{

	return 0;
}

二、合并两个有序链表

#include <iostream>
#include <vector>
using namespace std;

/* leetcode88题:合并两个有序数组 */
class Solution {
public:
    void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
        int p1 = m - 1, p2 = n - 1, p3 = m + n - 1;
        while (p1 != -1 || p2 != -1)
        {
            //注意“||”两端的条件最终得到拷贝数组中的元素的动作是相同的才可以
            if (p1 == -1 || p2 != -1 && (nums1[p1] <= nums2[p2]))   
            {
                nums1[p3--] = nums2[p2--];
            }
            else
            {
                nums1[p3--] = nums1[p1--];
            }
        }
        return;
    }
};


/* leetcode:21题,合并两个有序链表,采用的算法和合并数组一样 */
/* 直接创建一个头节点,从前向后(从小到大)的顺序插入排序就可以了 */
struct ListNode {
    int val;
    ListNode *next;
    ListNode() : val(0), next(nullptr) {}
    ListNode(int x) : val(x), next(nullptr) {}
    ListNode(int x, ListNode *next) : val(x), next(next) {}
};

class Solution {
public:
    ListNode* mergeTwoLists(ListNode* list1, ListNode* list2) {
        ListNode ret, * p1 = &ret;   //如果只创建一个指针,是没有链表元素的指针和元素的内存的,所以不能存储下一个节点地址。
        while (list1 || list2)
        {
            if (list1 == NULL || list2 != NULL && (list2->val <= list1->val))
            {
                p1->next = list2;
                list2 = list2->next;
                p1 = p1->next;
            }else{
                p1->next = list1;
                list1 = list1->next;
                p1 = p1->next;
            }
        }
        return ret.next;
    }
};


int main()
{

	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2072966.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九、前端中的异步方法Promise,Promise详解

文章目录 1.Promise简介什么是promise为什么使用Promisepromise中的状态 2.Promis的用法 1.Promise简介 什么是promise Promise是异步编程的一种解决方案&#xff0c;它的构造函数是同步执行的&#xff0c;then 方法是异步执行的。 为什么使用Promise 在JavaScript的世界中…

入门Java编程的知识点—>数组(day05)

重点掌握数组是什么&#xff1f;为什么要使用&#xff1f;如何进行数组的定义&#xff1f; 数组 数组是用来存储同一类型多个元素的存储结构,数组是引用数据类型. 存储同一类型的多个元素如何理解? 生活中: 衣柜→可以存储多个衣服 | 鞋柜→可以存储多个鞋子 | 橱柜→可以存储…

嵌入式Qt移植之tslib部署到Busybox根文件-思维导图-学习笔记-基于正点原子阿尔法开发板

嵌入式Qt移植之tslib部署到Busybox根文件 烧写Busybox根文件系统到开发板 准备好一个固化系统 以TF卡为例子 TF 卡用读卡器插到 Ubuntu 虚拟机 会出现两个分区 boot分区是存放内核和设备树这些 rootfs分区是存放文件系统的 eMMC、NADA FLASH或者其他方式挂载也可&#xf…

windows删除不了的一些长名字文件,为什么python可以删除?

感谢阅读 windows报错截图windows最大文件路径长度限制为什么基于windows系统运行的python可以完成删除文件名259字符的文件&#xff1f;文件系统的存储方式操作系统和文件系统的关系总结 windows报错截图 windows最大文件路径长度限制 但真的是260字符吗&#xff1f;早期windo…

系统分析师4:数据库系统

文章目录 1 数据库体系结构1.1 三级模式和两级映像1.2 分布式数据库1.2.1 分布式数据库概述1.2.2 分布式数据库特点1.2.3 透明性分类 2 数据库设计2.1 数据库设计概述2.2 概念结构设计2.3 逻辑结构设计 3 关系代数3.1 关系代数介绍3.2 典型例题 4 规范化理论4.1 规范化理论基础…

《黑神话·悟空》背后的神秘力量——揭秘游戏服务器架构

✌ 作者名字&#xff1a;高峰君主 &#x1f482; 作者个人网站&#xff1a;高峰君主 - 一个数码科技爱好者 &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f4ac; 人生格言&#xff1a;没有…

“智汇论坛“——基于 Spring 前后端分离版本的论坛系统

一.项目背景 1.项目简介 智汇论坛是一个集高科技与高效交流于一体的在线社区平台&#xff0c;旨在为用户提供一个便捷、智能的讨论空间。通过集成先进的服务器端技术和丰富的浏览器端技术&#xff0c;智汇论坛不仅支持用户之间的实时互动与信息共享&#xff0c;还确保了平台的…

火语言RPA流程组件介绍--提取应用内嵌资源

&#x1f6a9;【组件功能】&#xff1a;提取应用内嵌的文件、图片及文本等资源 配置预览 配置说明 提取类型 文件|图片|文本 选择资源 选择内嵌资源中的文件或者文本图片 提取成 路径|文本|二进制内容 输入输出 输入类型 万能对象类型(System.Object)输出类型 字符串…

电脑U口管理软件分享|U口管理软件哪个好?

电脑U口&#xff08;即USB端口&#xff09;管理软件是保护电脑安全、防止数据泄露和恶意软件入侵的重要工具。 在选择U口管理软件时&#xff0c;需要考虑其功能、易用性、安全性以及是否满足个人或企业的具体需求。以下是一些值得推荐的电脑U口管理软件及其特点&#xff1a; 1…

Ptrade获取热门板块,连板股票 python代码

之前有人咨询&#xff0c;ptrade如何获取不同的概念板块个股。其实很容易&#xff0c;本身有获取板块信息的API函数&#xff1a; get_sort_msg – 获取板块、行业的涨幅排名 get_sort_msg(sort_type_grpNone, sort_field_nameNone, sort_type1, data_count100) 接口说明 该接…

cola_os学习笔记(上)

cola_os的学习笔记 声明 该项目系本人学习项目所做的笔记。该项目的项目地址为cola_os: 300行代码实现多任务管理的OS&#xff0c;在很多MCU开发中&#xff0c;功能很简单&#xff0c;实时性要求不强&#xff0c;如果使用RTOS显得太浪费&#xff0c;任务多了管理不当又很乱&a…

《行进中国大运河篇》圆满收官 郭品超讲述运河精神展文化自信

昨日&#xff0c;山东卫视大型文化探访综艺节目《行进中国大运河篇》圆满收官。节目中&#xff0c;演员郭品超携手行进团成员张晓谦和俞庚寅&#xff0c;一同从杭州出发&#xff0c;沿着京杭大运河一路向北&#xff0c;途径江苏、山东&#xff0c;河南、河北、天津等多个省市&a…

什么是主机监控审计系统?三款热门计算机监控审计系统推荐!

主机监控审计系统是保障企业IT基础设施安全的重要工具&#xff0c;通过实时监控、记录和分析主机上的活动&#xff0c;有效检测并预防潜在的安全威胁。 本文将首先简述主机监控审计系统的基本概念&#xff0c;并推荐三款热门的计算机监控审计系统&#xff0c;其中特别介绍安企…

歌曲分享平台|基于SprinBoot+vue的原创歌曲分享平台系统(源码+数据库+文档)

原创歌曲分享平台 目录 基于SprinBootvue的原创歌曲分享平台 一、前言 二、系统设计 三、系统功能设计 5.1平台功能模块 5.2后台功能模块 5.2.1管理员功能模块 5.2.2用户功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码…

ChatGPT协助论文写作各阶段指令示例

学境思源&#xff0c;一键生成论文初稿&#xff1a; AcademicIdeas - 学境思源AI论文写作 在学术论文写作过程中&#xff0c;我们经常面临选题、文献综述、研究设计、数据分析、写作润色等多方面的挑战。人工智能技术的发展为这些挑战提供了新的解决方案。ChatGPT作为一款强大…

Qt:玩转QPainter序列三

前言 接着序列三&#xff0c;图像的合成模式。 图像的合成模式(CompositionMode)是在讲述当多个图像重叠时重叠部分该如何显示的问题。 正文 先看合成模式的定义&#xff0c;下面是分析。 1. enum CompositionMode 这个枚举类型CompositionMode定义了多种图像合成模式。图…

AI作曲工具真的这么神奇?新手也能出音乐!

AI音乐创作工具不仅让专业音乐人有了更多灵感来源&#xff0c;也让普通人能够轻松实现自己的音乐梦想。本文将带你了解如何使用这些工具创作出属于自己的音乐作品。 选择适合的AI音乐创作工具 首先&#xff0c;你需要找到一个适合自己的AI音乐创作平台。市场上有许多选择&…

算法学习019 BFS实现迷踪步 c++算法学习 中小学算法思维学习 比赛算法题解 信奥算法解析

CBFS实现迷踪步 一、题目要求 1、编程实现 有一个 n 行 m 列的方格迷宫&#xff0c;用 0 表示可以通过&#xff0c;用 1 表示不可以通过&#xff0c;每一步可以向上、下、左、右任意方向移动一格&#xff0c;请计算从左上角(1&#xff0c;1)位置移动到右下角(n&#xff0c;m)…

算法的学习笔记—序列化二叉树(牛客JZ37)

&#x1f600;前言 二叉树是数据结构中的一个重要概念&#xff0c;它在各种算法和应用中广泛使用。然而&#xff0c;当我们需要将二叉树保存到磁盘或在网络中传输时&#xff0c;需要将其转化为一种可存储和传输的格式——这就是序列化的作用。反之&#xff0c;反序列化则是将这…

一款好用且免费的PDF编辑软件:PDFelement

PDFelement是一款多功能的PDF编辑器&#xff0c;可以阅读、编辑、扫描、注释、转换、签名、合并、加密和打印PDF文档。 软件截图&#xff1a; 该版本已授权&#xff0c;可以使用全部功能。 使用说明&#xff1a; 1、将压缩文件解压到某固定位置&#xff0c;不要随意移动&…