Java刷题篇——合并两个有序数组

news2024/11/19 8:37:08

1.题目描述

给出一个有序的整数数组A 和有序的整数数组 B,请将数组B合并到数组A中,变成一个有序的升序数组。

数据范围:0 <= n,m <= 100, |Ai| <= 100, |Bi| <= 100

注意:

  1. 保证 A 数组有足够的空间存放 B 数组的元素, A 和 B 中初始的元素数目分别为 m 和 n,A的数组空间大小为 m+n
  2. 不要返回合并的数组,将数组 B 的数据合并到 A 里面就好了,且后台会自动将合并后的数组 A 的内容打印出来,所以也不需要自己打印
  3. A 数组在[0,m-1]的范围也是有序的

示例1

输入:[4,5,6],[1,2,3]

返回值:[1,2,3,4,5,6]

说明:A数组为[4,5,6],B数组为[1,2,3],后台程序会预先将A扩容为[4,5,6,0,0,0],B还是为[1,2,3],m=3,n=3,传入到函数merge里面,然后请同学完成merge函数,将B的数据合并A里面,最后后台程序输出A数组

示例2

输入:[1,2,3],[2,5,6]

返回值:[1,2,2,3,5,6]

2. 思路分析

  1. 题目已经明确表明,A数组足够大,那么我们就不需要开辟额外的空间,直接拿A 数组操作
  2. 因为是合并数组,所以就需要双指针,那么我们开辟指针i,指针j,一个指向A的m-1,一个指向B的n-1,两个指针移动前我们还需要定义一个index = m + n - 1代表合并数组的最后一个元素位置
  3. 开始移动,让A[i],B[j]比较谁大,谁大就合并谁
  4. 最后判断一下B合并完成没有,B没有合并完的话,直接把B丢进A

image-20231214205001863

3. 代码

import java.util.*;
public class Solution {
    public void merge(int A[], int m, int B[], int n) {
        int i = m - 1;
        int j = n - 1;
        int index = m + n - 1;
        while (i >= 0 && j >= 0) {
            if (A[i] > B[j]) {
                A[index] = A[i];
                index--;
                i--;
            } else {
                A[index] = B[j];
                index--;
                j--;
            }
        }
        while (i >= 0) {
            A[index] = A[i];
            index--;
            i--;
        }
        while (j >= 0) {
            A[index] = B[j];
            index--;
            j--;
        }
    }
}

运行结果:

image-20231214203938660

4.复杂度分析

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

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

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

相关文章

SDN之Python编程创建多数据中心网络

文章目录 1.拓扑结构2.具体步骤 1.拓扑结构 通过python编程创建一个包含2台核心交换机、4台汇聚交换机、8台边缘交换机和16台主机的网络拓扑&#xff0c;如图示&#xff1a; 2.具体步骤 首先ctrlaltT&#xff08;或右键&#xff09;打开终端&#xff0c;在/home/shy/minine…

u盘有文件但看不到怎么回事?

U盘有文件但看不到是常见的存储故障。这种情况下&#xff0c;用户可以在电脑上看到U盘的驱动盘符&#xff0c;但是无法看到其中的文件。接下来&#xff0c;我们将详细分析此现象的原因&#xff0c;并提供相应的解决方法。 u盘有文件但看不到怎么回事&#xff1f; 一、U盘有文件…

DataFunSummit:2023年数据科学在线峰会-核心PPT资料下载

一、峰会简介 数据会说谎&#xff1f;如何正确的挖掘并使用数据&#xff1f;前沿的科学实验如何做&#xff1f;实验又是如何欺骗你的&#xff1f;数据中台如何发挥功效&#xff1f;用户增长有捷径吗&#xff1f;数据科学的最佳实践有哪些&#xff1f; 本次峰会共包含了&#…

MacOS下载配置OpenCV

主要参考的是OpenCV官方的这篇文章&#xff1a;OpenCV: Installation in MacOS 安装OpenCV需要下载一些安装包&#xff1a;CMake3.9、Git、Python这些我之前已经下载好&#xff0c;这里就不过多阐述了&#xff0c;自行百度安装即可 1.从Git库获取OpenCV&#xff1a; git clon…

RF模块是如何工作的?

射频&#xff08;RF&#xff09;模块使用无线电频率工作&#xff0c;这个频率范围在30kHz到300kHz之间变化。 在这个射频系统中&#xff0c;数字数据被表示为载波波幅度的变化。这种调制类型是振幅移位键。 这个射频模块是射频发射器和接收器的组合&#xff0c;发射器接收器对的…

Day61力扣打卡

打卡记录 反转二叉树的奇数层&#xff08;bfs&#xff09; 链接 class Solution:def reverseOddLevels(self, root: Optional[TreeNode]) -> Optional[TreeNode]:q [root]flag 0while q:t, q q, []if flag:l, r 0, len(t) - 1while l < r:t[l].val, t[r].val t[r]…

idea代码测试覆盖率

前言 单元测试其实是检测代码最好的方式&#xff0c;单元测试&#xff0c;代码质量&#xff0c;这些都是很好的工具&#xff0c;单元测试需要结合mockito框架进行mock来测试&#xff0c;否则没用的数据写入到数据库里面也是占用空间&#xff0c;本身测试只是为了检查我的逻辑是…

neo4j如何创建多个数据库

1.在neo4j的压缩包解压位置找到neo4j.conf文件 "D:\neo4j\neo4j-community-3.5.5\conf\neo4j.conf"2.修改文件 新增dbms.activate_database**.db 再重新neo4j打开网页就进入到新建的数据库中 如果要切换&#xff0c;就把原来的注释掉就可以

LeetCode Hot100 25.K个一组翻转链表

题目&#xff1a; 给你链表的头节点 head &#xff0c;每 k 个节点一组进行翻转&#xff0c;请你返回修改后的链表。 k 是一个正整数&#xff0c;它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xff0c;那么请将最后剩余的节点保持原有顺序。 你不能只是单纯…

Linux内核介绍

文章目录 Linux内核介绍1. Linux内核的起源和发展历程1.1 起源1.2 发展历程 2. Linux内核的主要特性2.1 多任务处理2.2 多用户2.3 内存管理2.4 网络功能 3. Linux内核的架构3.1 用户空间与内核空间3.2 内核模块 4. Linux内核的疑难技术点解析4.1 进程调度4.2 内存管理 5. Linux…

【Spring】05 生命周期之初始化回调

文章目录 1. 回调是什么2. 初始化回调2.1 实现 InitializingBean 接口2.2 配置 init-method 3. 执行顺序4.优势及应用总结 在 Spring 框架中&#xff0c;生命周期回调&#xff08;Lifecycle Callbacks&#xff09;是一种强大的机制&#xff0c;它允许我们在 Spring 容器中的 Be…

阿里发布高质量图像转视频AI模型I2VGen-XL

受益于扩散模型快速发展&#xff0c;视频合成近年来取得了显著进步。然而&#xff0c;在语义准确性、清晰度和时空连续性方面仍存在挑战。这主要源于缺乏良好对齐的文本视频数据以及视频的复杂结构&#xff0c;使得模型难以同时确保卓越的语义和质量。 阿里团队提出了一种级联…

怎么把图片转文字?这几个图片转文字方法一定要知道!

怎么把图片转文字&#xff1f;无论是从书籍、网络还是社交媒体上&#xff0c;我们经常需要从图片中提取文字来进行复制、编辑或翻译。手动操作耗时耗力&#xff0c;效率低下&#xff0c;那么怎么把图片转文字呢&#xff1f;今天我将介绍三种不同的方法来实现图片转文字。 图片转…

DevOps搭建(六)-安装Maven详细步骤

1、官网下载 下载地址&#xff1a; Maven – Download Apache Maven 2、上传压缩包到服务器 把下载好的压缩包上传到服务器上。 3、解压压缩包 解压压缩包到安装目录/usr/local/ tar -zxvf apache-maven-3.9.3-bin.tar.gz -C /usr/local/ 切换到/usr/local目录下ls命令看…

持续集成交付CICD:GitLabCI操作Harbor仓库

目录 一、实验 1.GitLabCI操作Harbor仓库 二、问题 1.gitlab-runner连接docker daemon报错 一、实验 1.GitLabCI操作Harbor仓库 &#xff08;1&#xff09;修改GitLabCI共享库代码并提交到mater CI.yaml .pipelineInit:tags:- buildstage: .prevariables:GIT_CHECKOUT: …

代码随想录第三十三天(一刷C语言)|斐波那契数爬楼梯使用最小花费爬楼梯

创作目的&#xff1a;为了方便自己后续复习重点&#xff0c;以及养成写博客的习惯。 动态规划步骤&#xff1a; 确定dp数组以及下标的含义确定递推公式dp数组如何初始化确定遍历顺序举例推导dp数组 一、斐波那契数 思路&#xff1a;参考carl文档 1、dp[i]的定义为&#xff…

FPGA巩固基础:秒表的设计

设计要求&#xff1a; 6位8段数码管&#xff0c;低三位显示毫秒计数&#xff0c;最高位显示分钟&#xff0c;其余两位显示秒计数。 开始案件与暂停按键&#xff0c;复位按键直接全部归零。 扩展部分&#xff1a;每计满一次&#xff0c;led移位一次。 框图设计&#xff1a; …

Android BluetoothAdapter 使用(二)

Android BluetoothAdapter 使用(二) 本篇文章主要讲下蓝牙设备的配对. 1: 蓝牙设备列表展示 下 面是蓝牙设备adapter的代码: package com.test.bluetooth;import android.bluetooth.BluetoothDevice; import android.content.Context; import android.view.LayoutInflater;…

Netty—NIO万字详解

文章目录 NIO基本介绍同步、异步、阻塞、非阻塞IO的分类NIO 和 BIO 的比较NIO 三大核心原理示意图NIO的多路复用说明 核心一&#xff1a;缓存区 (Buffer)Buffer类及其子类Buffer缓冲区的分类MappedByteBuffer类说明&#xff1a; 核心二&#xff1a;通道 (Channel)Channel类及其…

解决vue3 动态引入报错问题

之前这样写的&#xff0c;能使用&#xff0c;但是有警告 警告&#xff0c;查了下&#xff0c;是动态引入的问题&#xff0c;看到说要用glob 然后再我的基础上&#xff0c;稍微 改了下&#xff0c;就可以了&#xff1a; 最后打印了下&#xff0c;modules[../../components/flowc…