LeetCode88——合并两个有序数组

news2024/9/21 2:39:56

LeetCode88——合并两个有序数组

1.题目描述:

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。
为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

在这里插入图片描述

2.Result01:

先将数组nums2中的元素全部存入nums1中,再对nums1数组进行排序。
在这里插入图片描述

  public static int[] merge(int[] arr1,int len1,int[] arr2,int len2){

        //先 添加
        for (int i = 0; i < len2; i++) {
            arr1[len1++] = arr2[i];
        }
        //后 排序
        Arrays.sort(arr1);
        return arr1;
    }

时间复杂度:取决于排序算法的时间复杂度。
空间复杂度:O(1)
在这里插入图片描述

3.Result02

利用上数组非递减顺序排列的这一特性,创建一个新数组(长度与arr1相同),用两个指针分别指向两个数组元素的末端,谁比较大就放在新建数组的末端(倒序存放),最后再将新建数组的元素赋值给第一个数组。

在这里插入图片描述
在这里插入图片描述

 public static int[] merge(int[] arr1, int len1, int[] arr2, int len2) {//len1表arr1中的有效元素个数 len2同理
        //如果arr1中的元素个数为0,那么直接将arr2元素一一赋给arr1即可
        if (len1 == 0) {
            for (int i = 0; i < len2; i++) {
                arr1[i] = arr2[i];
            }
            return arr1;
        }
        //根据题意创建新数组的长度设置为arr1的长度即可,因为题中已说明arr1的长度足以存入两个数组的全部元素
        int[] tempArr = new int[arr1.length];
        //i,j分别指向各自数组的最后一个有效元素
        int i = len1 - 1;
        int j = len2 - 1;
        //k指向新数组的最后一个位置
        int k = tempArr.length - 1;

        while (i >= 0 && j >= 0) { //防止数组下标越界
            //谁大就把谁的值放在新数组中 并执行--前移操作
            if (arr1[i] >= arr2[j]) {
                tempArr[k--] = arr1[i--];
            } else {
                tempArr[k--] = arr2[j--];
            }
        }
        //在上述while循环i j不可能同时小于0
        //如果i<0 证明 arr1中元素已比较完并且全部加入了新数组中  但arr2中还有元素未存(j未<0)
        if (i < 0) {
            //先将已经比较好的新数组中的元素 按相应位置 赋值到arr1中
            for (int l = j + 1; l < tempArr.length; l++) {
                arr1[l] = tempArr[l];
            }
            //再将二中未合并的剩余元素 按顺序赋值到arr1中
            while (j>=0){
                arr1[j] = arr2[j];
                j--;
            }
            return arr1;
        //如果j<0 证明 arr2中的数组已全部处理完毕
        } else {
            //将新数组中已处理好的元素 一一按照相应位置覆盖到 arr1 中即可
            for (int l = i + 1; l < tempArr.length; l++) {
                arr1[l] = tempArr[l];
            }
        }
        return arr1;
    }

时间复杂度:O(m+n) ,空间复杂度O(m+n)
在这里插入图片描述

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

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

相关文章

SylixOS BSP开发(八)

初始化FPU、MMU和Cache组件 本来想在不初始化这些部件的情况下把SylixOS先启动起来感受下&#xff0c;结果测试发现如果MMU不使能的话&#xff0c;系统启动过程中线程无法进行调度emm。。。所以只好把这一章节提前来讲了。这三个组件的初始化都是在bspInit.c中进行的。 1. FPU初…

从零开始做一个SDWAN

VPN和SD-WAN的区别 VPN&#xff08;Virtual Private Network&#xff09;和SD-WAN&#xff08;Software-Defined Wide Area Network&#xff09;是两种不同的网络技术&#xff0c;它们在目的、功能和实施方式上有一些重要的区别。 目的和应用场景: VPN&#xff1a;VPN主要用于…

做图标设计一些常用的设计规范分享

应用程序图标设计是将某个概念转换为清晰易读的图形&#xff0c;从而降低用户的理解成本&#xff0c;提高界面的美感。在我们的企业级应用设计范围内&#xff0c;应用图标在界面设计的许多元素中往往只占很小的比例&#xff0c;调用时会缩小到比设计稿小很多倍的尺寸。此外&…

kafka3.X集群安装(不使用zookeeper)

参考: 【kafka专栏】不用zookeeper怎么安装kafka集群-最新kafka3.0版本 一、kafka集群实例角色规划 在本专栏的之前的一篇文章《kafka3种zk的替代方案》已经为大家介绍过在kafka3.0种已经可以将zookeeper去掉。 上图中黑色代表broker&#xff08;消息代理服务&#xff09;&…

DLT645转modbus协议网关采集电表的数据方法

DLT645有两个版本分别是DLT645-97和DLT645-07&#xff0c;该协议主要用于电表抄表&#xff0c;采用为主-从结构的半双工通讯模式&#xff0c;硬件接口使用RS-485今天我们来看下&#xff0c;用远创智控YC-645-TCP网关如何采集电表的数据 1&#xff0c;首先&#xff0c;我们需要…

淘宝京东抖音1688苏宁等关键词搜索商品API接口(关键词搜索商品API接口,关键词搜索商品列表接口)

淘宝京东抖音1688苏宁等关键词搜索商品API接口&#xff08;关键词搜索商品API接口&#xff0c;关键词搜索商品列表接口&#xff09;代码对接如下&#xff1a; item_search-按关键字搜索淘宝商品 taobao.item_search 1.公共参数 名称类型必须描述keyString是调用key&#xf…

UG\NX二次开发 获取面的面面积、周长

文章作者:里海 来源网站:王牌飞行员_里海_里海NX二次开发3000例,里海BlockUI专栏,C\C++-CSDN博客 感谢粉丝订阅 感谢 weixin_38891498 订阅本专栏,非常感谢。 简介 UG\NX二次开发 获取面的面面积、周长 效果 代码 #include "me.hpp" #include <NXOpen/Session…

docker部署prometheus+grafana服务器监控(二) - 安装数据收集器 node-exporter

在目标服务器安装数据收集器 node-exporter 1. 安装数据收集器 node-exporter wget https://github.com/prometheus/node_exporter/releases/download/v1.6.1/node_exporter-1.6.1.linux-amd64.tar.gztar xvf node_exporter-1.6.1.linux-amd64.tar.gzmv node_exporter-1.6.1…

【蓝桥】铺地板

1、题目 问题描述 小蓝家要装修了&#xff0c;小蓝爸爸买了很多块&#xff08;可理解为数量无限&#xff09; 2 3 2 \times 3 23 规格的地砖&#xff0c;小蓝家的地板是 n m n \times m nm 规格的&#xff0c;小蓝想问你&#xff0c;能否用这些 2 3 2 \times 3 23 的地砖…

【QT开发(14)】QT P2P chat 聊天

在【P2P学习&#xff08;2&#xff09;】P2P 通信&#xff0c;主要存在四种不同的网络模型的第一阶段&#xff1a;集中式P2P 模式 最简单的路由方式就是集中式&#xff0c;即存在一个中心节点保存了其他所有节点的索引信息&#xff0c;索引信息一般包括节点 IP 地址、端口、节…

YOLOv8训练自己的数据集+改进方法复现

yolov8已经出来好几个月了&#xff0c;并且yolov8从刚开始出来之后的小版本也升级好几次&#xff0c;总体变化不大&#xff0c;个别文件存放位置发生了变化&#xff0c;以下以最新版本的YOLOv8来详细学习和使用YOLOv8完成一次目标检测。 一、环境按照 深度学习环境搭建就不再…

Cesium 展示——实现鼠标移动到实体上动态高亮显示

文章目录 需求分析需求 在开发中,遇到这样一个需求:在绘制完实体后,要求鼠标移动到上边后有高亮的效果,看的清除一点,因此,经过尝试,做出了如下解决方案 在这里,我们以线为例,实现其动态高亮显示 分析 在这里我们首先需要有一个鼠标监听事件,在合适的位置注册鼠标监听…

uni.showModal的用法

uni.showModal({title: 提示,//标题content: "内容",//提示内容可以加入\r\n进行换行showCancel: true,//是否显示取消按钮&#xff0c;默认为truecancelText: 取消,//取消按钮的文字confirmText: 确定,//确认按钮的文字confirmColor: #ff0000,//确认按钮文字颜色can…

chrony时间服务

目录 1.1.重要性 1.2. Linux的两个时钟 1.3. NTP 1.4. Chrony介绍 2.安装与配置 2.1.安装: 2.2. Chrony配置文件分析 3.实验 3.1实验1 3.2实验2 3.常见时区 1.1.重要性 ●由于IT系统中&#xff0c;准确的计时非常重要&#xff0c;有很多种原因需要准确计时: 。在网络…

Netty核心源码剖析

Netty 线程模型 Netty高并发高性能架构设计精髓 主从Reactor线程模型NIO多路复用非阻塞无锁串行化设计思想支持高性能序列化协议零拷贝(直接内存的使用)ByteBuf内存池设计灵活的TCP参数配置能力并发优化 无锁串行化设计思想 在大多数场景下&#xff0c;并行多线程处理可以提…

网络原理之TCP协议(超详细 干货满满)

文章目录 前言TCP 协议的段格式TCP 协议的相关特性什么叫做可靠传输TCP 采用了哪些主要机制保证了可靠传输和优化传输效率1. 确认应答2. 超时重传3. 连接管理&#xff08;三次握手、四次挥手&#xff09;三次握手&#xff08;建立连接&#xff09;四次挥手&#xff08;断开连接…

【方法】如何给PDF文件添加“打开密码”?

PDF文件可以在线浏览&#xff0c;但如果想要给文件添加“打开密码”&#xff0c;就需要用到软件工具&#xff0c;下面小编分享两种常用的工具&#xff0c;小伙伴们可以根据需要选择。 工具一&#xff1a;PDF编辑器 PDF阅读器一般是没有设置密码的功能模块&#xff0c;PDF编辑器…

全志A523(显示篇一)

全志使用de架构&#xff0c;兼容drm架构 返回目录

全面的‘由于找不到mfc110u.dll,无法继续执行代码’的解决方法分享,3分钟教你快速修复

在我们使用电脑的过程中&#xff0c;有时候可能会遇到某个应用程序启动失败&#xff0c;提示“由于找不到mfc110u.dll,无法继续执行代码”的问题。本文将详细介绍如何针对这类问题进行处理&#xff0c;以及mfc110u.dll文件的相关知识。 一.mfc110u.dll文件盘点 首先&#xff0…

用豆瓣电影和掌桥科研练习网页解析的三种方式——正则、Xpath和bs4

网页解析 豆瓣电影解析方式正则表达式Xpathbs4 翻页 掌桥科研正则表达式Xpathbs4 豆瓣电影 解析方式 先爬取数据&#xff1a; # -- coding: utf-8 --** import requests import json import time import pandas as pdurlhttps://movie.douban.com/top250?start0&filter…