【算法训练-数组 四】【数组合并】:合并两个有序数组

news2024/11/24 12:25:20

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【数组组合】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为:目标公司+最近一年+出现频率排序,由高到低的去牛客TOP101去找,只有两个地方都出现过才做这道题(CodeTop本身汇聚了LeetCode的来源),确保刷的题都是高频要面试考的题。

在这里插入图片描述

名曲目标题后,附上题目链接,后期可以依据解题思路反复快速练习,题目按照题干的基本数据结构分类,且每个分类的第一篇必定是对基础数据结构的介绍

合并两个有序数组【EAZY】

其实这道题的思路和合并两个有序链表大同小异

题干

直接粘题干和用例在这里插入图片描述

解题思路

给出解题思路,最好有图

  • step 1:使用三个指针,i指向数组A的最大元素,j指向数组B的最大元素,index指向数组A空间的结尾处。
  • step 2:从两个数组最大的元素开始遍历,直到某一个结束,每次取出较大的一个值放入数组A空间的最后,然后指针一次往前。
  • step 3:如果数组B先遍历结束,数组A前半部分已经存在了,不用管但是如果数组A先遍历结束,则需要把数组B剩余的前半部分依次逆序加入数组A前半部分,类似归并排序最后的步骤。

在这里插入图片描述

代码实现

给出代码实现基本档案

基本数据结构数组
辅助数据结构
算法迭代
技巧双指针(逆序双指针)

其中数据结构、算法和技巧分别来自:

  • 10 个数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Trie 树
  • 10 个算法:递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法
  • 技巧:双指针、滑动窗口、中心扩散

当然包括但不限于以上

import java.util.*;
public class Solution {
    public void merge(int A[], int m, int B[], int n) {
        // 1 入参校验,数组长度需要满足条件
        if (A == null || A.length < m + n) {
            return;
        }
        // 2 因为A数组后几位是空着的,为了不让前面元素的移动引起的挪动导致整个A发生元素移动,问题可以转换为找最大值,先把最大值放到最后的空位置
        int maxIndex = m + n - 1;
        int i = m - 1;
        int j = n - 1;
        // 双指针从大到小移动,比较A和B的元素将较大的放到A中后边的位置
        while (i >= 0 && j >= 0) {
            A[maxIndex--] = A[i] > B[j] ? A[i--] : B[j--];
        }

        // 如果B还有剩余合并到A中;如果是A有剩余,无需合并到A中
        while (j >= 0) {
            A[maxIndex--] = B[j--];
        }
    }
}

复杂度分析

  • 时间复杂度:O(m+n)。 指针移动单调递增,最多移动 m+n 次,因此时间复杂度为 O(m+n)。
  • 空间复杂度:O(m+n)。 需要建立长度为 m+n 的中间数组

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

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

相关文章

【小黑送书—第三期】>>《深入浅出SSD》

近年来国家大力支持半导体行业&#xff0c;鼓励自主创新&#xff0c;中国SSD技术和产业良性发展&#xff0c;产业链在不断完善&#xff0c;与国际厂商的差距逐渐缩小。但从行业发展趋势来看&#xff0c;SSD相关技术仍有大幅进步的空间&#xff0c;SSD相关技术也确实在不断前进。…

localhost和127.0.0.1都可以访问项目,但是本地的外网IP不能访问

使用localhost和127.0.0.1都可以访问接口&#xff0c;比如&#xff1a; http://localhost:8080/zhgl/login/login-fy-list或者 http://127.0.0.1:8080/zhgl/login/login-fy-list返回json {"_code":10000,"_msg":"Success","_data":…

数据结构与算法-循环链表、双向链表

我们这里接着上一篇单链表继续往下深入学习循环链表、双向链表。 链表 &#x1f388;3.循环链表&#x1f52d;3.1循环链表的概念&#x1f52d;3.2循环链表的基本操作&#x1f50e;3.2.1创建空表&#x1f50e;3.2.2插入操作&#x1f50e;3.2.3删除操作 &#x1f388;4.双向链表&…

图的存储-链式前向星

链式前向星 链式前向星是民间OI选手发明的数据结构。用另一个词解释它就是&#xff1a;用数组模拟的邻接链表。最核心的思想就是用数组模拟链表。 &#xff08;1&#xff09;前向星 前向星就是边的集合。一个图&#xff0c;只要将它的所有边存储起来&#xff0c;就能知道它的…

为什么append到父节点后的子节点发生修改,父节点打印出来的也会变化

今天走查前端代码&#xff0c;发现历史代码写出来的不规范&#xff0c;但是他还是在生产运行了很久的代码&#xff0c;仔细思量后发现&#xff0c;其实原理是对的&#xff0c;只是看起来不美观&#xff0c;不易读而已。 废话不说&#xff0c;先上demo代码 <!DOCTYPE html&g…

【Verilog 教程】7.1Verilog 除法器设计

除法器原理&#xff08;定点&#xff09; 和十进制除法类似&#xff0c;计算 27 除以 5 的过程如下所示&#xff1a; 除法运算过程如下&#xff1a; (1) 取被除数的高几位数据&#xff0c;位宽和除数相同&#xff08;实例中是 3bit 数据&#xff09;。 (2) 将被除数高位数据与…

实时选品系统实现的难点

实时选品系统是一个涉及到多个领域的复杂系统&#xff0c;需要兼顾数据挖掘和分析、推荐算法、机器学习、大数据处理等多方面的技术&#xff0c;才能实现高效、准确和可扩展的功能。 以下是实现实时选品系统时可能遇到的难点&#xff1a; 数据量大&#xff1a;实时选品系统需要…

无需公网IP,企业如何访问私有云?

企业的日常办公中已经习惯利用网盘或在线传输服务来进行文件传输和分享&#xff0c;面对一系列层出不穷的数据泄露和黑客行为&#xff0c;企业也越来越担心隐私泄露的问题&#xff0c;并寻找真正存储私有化的解决方案。某企业的总部在北京&#xff0c;在上海还有2处办公室&…

云服务器能干什么?腾讯云服务器的几十种玩法

腾讯云服务器价格很便宜尤其是轻量应用服务器&#xff0c;搞一台云服务器可以用来干嘛&#xff1f;云服务器的用途是很广的&#xff0c;现在轻量应用服务器2核2G3M、2核2G4M、4核8G12M等配置&#xff0c;百元的价格&#xff0c;买一台云服务器后可以做什么&#xff1f;拿来搭建…

PYTHON计算CPK及规范限合格率,绘制直方图概率密度曲线

CPK&#xff08;过程能力指数&#xff09;是一个用于衡量一个过程的稳定性和一致性的统计指标&#xff0c;特别用于制造业和质量管理中。它衡量了一个过程的变异性与规范界限的关系&#xff0c;帮助确定过程是否能够产生合格的产品或服务。 正态分布假设&#xff1a;CPK的计算…

多地智能停车场系统,如何实现数据互联互通?

某公司是从事嵌入式工控车牌自动识别系统、RFID蓝牙远距离读写系列、RFID电子标签系列、智能卡停车场、门禁一卡通智能管理系统、公务车派遣系统、运输车统计系统设备的开发、设计、制造、安装、调试及售后服务的企业。在智能卡停车场系统设备、人员通道闸设备方面有多项国家专…

通过Python脚本+Jekins实现项目重启

文章目录 一、需求二、分析三、实现公共代码单个服务版本1、写死某个服务2、支持服务单选 多服务版本最终实现效果将Python程序转换为桌面可执行文件&#xff08;.exe&#xff09; 一、需求 微服务项目&#xff0c;服务很多&#xff0c;重启服务&#xff0c;基本都是通过Jekin…

【微服务】RedisSearch 使用详解

目录 一、RedisJson介绍 1.1 RedisJson是什么 1.2 RedisJson特点 1.3 RedisJson使用场景 1.3.1 数据结构化存储 1.3.2 实时数据分析 1.3.3 事件存储和分析 1.3.4 文档存储和检索 二、当前使用中的问题 2.1 刚性数据库模式限制了敏捷性 2.2 基于磁盘的文档存储导致瓶…

数学题目大合集 1

文章目录 建议这个题目集适合什么人?小剧场题目集M 题目 1算式法 1法 2M 题目 2算法分解质因数因数个数因数和因数积倒数和答M 题目 3算式解析HM 题目 4算式复习分解(利用“简单”数学)解析总结反馈建议 码字不易,还望关注点赞鼓励! 每个数学题目大合集都有 4 道题,题目…

【计算机网络】你真的懂学校的校园网吗?

【计算机网络】你真的懂学校的校园网吗&#xff1f; 第一步&#xff1a;从了解本机的ip开始 ip地址ip地址的分类公用地址和私有地址 查看本机ip 第二步&#xff1a;向上追溯&#xff0c;查看宿舍的路由器 路由器路由器的两个物理接口路由器用到的协议 分析宿舍路由器WAN口设置 …

linux系统篇(二).之Systemd机制

一、system介绍 systemd配置文件 systemd中这些资源分别代表着不同的单元&#xff08;Unit&#xff09;。systemd 总共有 11 种不同类型的“单元”。单元封装了与系统启动和维护相关的各种对象。systemd通过这些Unit的配置文件&#xff0c;知道怎么启动这些Unit。 提供以下单位…

为什么建议你考一个pmp项目管理证书?

先说一下&#xff0c;不是建议所有人考pmp&#xff0c;毕竟也不是所有人都做项目管理这一行&#xff0c;主要是项目管理人士&#xff08;PMI提出的pmp目标人群&#xff09;&#xff0c;大概如下几类&#xff1a; 项目小白&#xff0c;想进入项目管理行业&#xff0c;可在招聘上…

JDBC和GUI实现图书管理系统

1.介绍 主要通过gui页面实现了与mysql数据库实现交互,跟以前写的图书管理系统相比就是从存在集合中变成了存在数据库中. 下面我来介绍一下主要功能吧: 1.1.通过基本信息添加图书: 1.2.通过ID修改图书 1.3.通过ID查询图书 1.4.通过ID删除图书 2.构建数据库 2.1建库 …

深圳市重点实验室申报要求-华夏泰科

深圳市重点实验室&#xff0c;以开展基础研究、应用基础研究、前沿技术研究&#xff0c;培养人才、支撑产业和社会发展为目标而建立。它为研究人员提供了一个独特的平台&#xff0c;提供了一个展示他们创新性研究的舞台。本文将深入探讨如何申报深圳市重点实验室&#xff0c;为…

VS2022配置Opencv

配置环境变量 配置路径 由于新版本VS属性管理器没有Microsoft.cpp.x64.user文件&#xff0c;可以选择直接在Debug x64进行配置 配置包含目录和库目录 配置链接器