算法工程题(非递减顺序 排列)

news2025/2/26 5:56:14
*  题意说明:
*      给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,
*      分别表示 nums1 和 nums2 中的元素数目。
*      请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。
*  注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,
*      其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。
*
*  示例 1:
*      输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
*      输出:[1,2,2,3,5,6]
*      解释:需要合并 [1,2,3] 和 [2,5,6] 。
*      合并结果是 [1,2,2,3,5,6] ,其中斜体加粗标注的为 nums1 中的元素。
*
*  示例 2:
*      输入:nums1 = [1], m = 1, nums2 = [], n = 0
*      输出:[1]
*      解释:需要合并 [1] 和 [] 。
*      合并结果是 [1] 。
*
*  示例 3:
*      输入:nums1 = [0], m = 0, nums2 = [1], n = 1
*      输出:[1]
*      解释:需要合并的数组是 [] 和 [1] 。
*      合并结果是 [1] 。
*      注意,因为 m = 0 ,所以 nums1 中没有元素。nums1 中仅存的 0 仅仅是为了确保合并结果可以顺利存放到 nums1 中。
*
*  提示:
*      nums1.length == m + n
*      nums2.length == n
*      0 <= m, n <= 200
*      1 <= m + n <= 200
*      -109 <= nums1[i], nums2[j] <= 109
*      进阶:你可以设计实现一个时间复杂度为 O(m + n) 的算法解决此问题吗?
*
*  Related Topics
*  数组
*  双指针
*  排序
*
* @Date 2023/8/30 10:06
* @Version 1.0
*/
public class Merge {

    public static void main(String[] args) {
        // 验证代码
    }
    public static void merge(int[] nums1, int m, int[] nums2, int n) {

    }
}

方法一:合并后排序

  public static void merge(int[] nums1, int m, int[] nums2, int n) {
    //进行合并
    for (int i = 0; i < n; i++) {
      nums1[m+i] = nums2[i];
    }
    //排序
    Arrays.sort(nums1);

    System.out.println(Arrays.toString(nums1));
  }

方法二:双指针思想

如下面的动画所示

 public static void merge(int[] nums1, int m, int[] nums2, int n) {
    int left=0 ,right =0;
    int[] arr = new int[m + n];
    int cur;
    while(left < m || right < n){
      if(left == m){
        cur = nums2[right++];
      } else if (right ==n) {
        cur = nums1[left++];
      } else if (nums1[left] < nums2[right]) {
        cur = nums1[left++];
      }else {
        cur = nums2[right++];
      }
      arr[left + right -1] = cur;
    }
    for (int i = 0; i != m+n; i++) {
      nums1[i] = arr[i];
    }
    System.out.println(Arrays.toString(nums1));
  }

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

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

相关文章

flex实现瀑布流布局可用于uniapp项目和vue项目

flex布局实现瀑布流 介绍 flex实现瀑布流布局&#xff0c;可用于vue项目,uniapp项目。 实现方式 将列表分为两列或者多列&#xff0c;在循环时分别处理列表数据显示。 预览地址 http://diy.hsycms.com/waterfall/index.htmlhttps://gitee.com/link?targethttp%3A%2F%2Fd…

gitlab升级

1.下载需要的版本 wget -c https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-15.7.6-ce.0.el7.x86_64.rpm --no-check-certificate gitlab-ce-15.4.6-ce.0.el7.x86_64.rpm gitlab-ce-15.7.6-ce.0.el7.x86_64.rpm gitlab-ce-15.9.7-ce.0.el7.x86_64.rpm g…

node 如何下载任意版本

开门见山啦 第一步&#xff1a;打开node官网 Node.js 第二步&#xff1a;点击下载 进入下面的页面&#xff0c;然后往下滑&#xff0c;点击 All download options 查看以往所有的版本号&#xff1a; 这样就可以按自己的需求下载对应的node版本啦 或者 &#xff1a; 最简单…

【Cortex-M3权威指南】学习笔记4 - 异常

目录 实现 CM3流水线CM3 详细框图CM3 总线接口总线连接模板 异常异常类型优先级定义优先级组 向量表中断输入于挂起NMI中断挂起 Fault 类异常总线 faults存储器管理 faults用法 faults SVC 与 PendSV 实现 CM3 流水线 CM3 处理器使用 3 级流水线&#xff0c;分别是&#xff1a;…

Elasticsearch 7.6 - Springboot应用基础操作篇

ES 7.6 - JAVA应用基础操作篇 环境准备依赖配置 实体类准备使用说明索引/映射操作创建索引和映射索引和映射相关查询删除索引 文档操作插入数据更新数据删除数据批量操作 文档查询根据ID查询根据字段精准查询根据字段分词查询控制返回字段范围查询组合查询排序分页高亮搜索聚合…

C#---第21: partial修饰类的特性及应用

0.知识背景 局部类型适用于以下情况&#xff1a; 类型特别大&#xff0c;不宜放在一个文件中实现。一个类型中的一部分代码为自动化工具生成的代码&#xff0c;不宜与我们自己编写的代码混合在一起。需要多人合作编写一个类 局部类型的限制: 局部类型只适用于类、接口、结构&am…

MySQL之脏读,不可重复读与幻读的概念及区别

MySQL是一款常用的关系型数据库&#xff0c;但在使用过程中&#xff0c;可能会遇到一些问题&#xff0c;比如脏读、不可重复读和幻读。这些问题可能会导致数据的不一致性&#xff0c;因此需要了解它们的概念及区别。 1. 脏读 首先是脏读。脏读是指在一个事务中读取了另一个事…

软件UI工程师工作的岗位职责(合集)

软件UI工程师工作的岗位职责1 职责&#xff1a; 1.负责产品的UI视觉设计(手机软件界面 网站界面 图标设计产品广告及 企业文化的创意设计等); 2.负责公司各种客户端软件客户端的UE/UI界面及相关图标制作; 3.设定产品界面的整体视觉风格; 4.参与产品规划构思和创意过程&…

java JUC并发编程 第三章 中断机制

系列文章目录 第一章 java JUC并发编程 Future: link 第二章 java JUC并发编程 多线程锁: link 第三章 java JUC并发编程 中断机制: link 文章目录 系列文章目录1 LockSupport前言1.1 如何停止中断运行中的线程1.1.1 通过volatile变量实现1.1.2 通过AtomicBoolean实现1.1.3 通…

智慧工地源码带开发手册文档 app 数据大屏、硬件对接、萤石云

智慧工地解决方案依托计算机技术、物联网、云计算、大数据、人工智能、VR、AR等技术相结合&#xff0c;为工程项目管理提供先进技术手段&#xff0c;构建工地现场智能监控和控制体系&#xff0c;弥补传统方法在监管中的缺陷&#xff0c;最终实现项目对人、机、料、法、环的全方…

Verilog基础:延时模型

相关阅读 Verilog基础专栏https://blog.csdn.net/weixin_45791458/category_12263729.html?spm1001.2014.3001.5482 目录 1、连续赋值延时 1.1、赋值内嵌延时 1.2、线网声明延时 1.3、门延迟 2、过程赋值延时 2.1、过程语句前置时序控制 2.2、过程赋值语句内嵌时序控制…

记录--解决前端内存泄漏:问题概览与实用解决方案

这里给大家分享我在网上总结出来的一些知识&#xff0c;希望对大家有所帮助 内存泄漏是前端开发中的一个常见问题&#xff0c;可能导致项目变得缓慢、不稳定甚至崩溃。在本文中&#xff0c;我们将深入探讨在JavaScript、Vue和React项目中可能导致内存泄漏的情况&#xff0c;并提…

现代C++中的从头开始深度学习:【6/8】成本函数

现代C中的从头开始深度学习&#xff1a;成本函数 一、说明 在机器学习中&#xff0c;我们通常将问题建模为函数。因此&#xff0c;我们的大部分工作都包括寻找使用已知模型近似函数的方法。在这种情况下&#xff0c;成本函数起着核心作用。 这个故事是我们之前关于卷积的讨论的…

【python爬虫】7.爬到的数据存到哪里?

文章目录 前言存储数据的方式存储数据的基础知识基础知识&#xff1a;Excel写入与读取基础知识&#xff1a;csv写入与读取项目&#xff1a;存储周杰伦的歌曲信息 复习 前言 上一关我们以QQ音乐为例&#xff0c;主要学习了如何带参数地请求数据&#xff08;get请求&#xff09;…

软件测试/测试开发丨Pytest和Allure报告 学习笔记

点此获取更多相关资料 本文为霍格沃兹测试开发学社学员学习笔记分享 原文链接&#xff1a;https://ceshiren.com/t/topic/26755 Pytest 命名规则 类型规则文件test_开头 或者 _test 结尾类Test 开头方法/函数test_开头注意&#xff1a;测试类中不可以添加__init__构造函数 注…

IP基本原理(上)

文章目录 一、IP的定义二、IP的作用1.标识节点和链路2.寻址和转发3.适应各种数据链路 三、IP头部封装格式四、MTU五、IP地址1.定义2.格式2.1 点分十进制和二进制关系与转换2.2 由网络位主机位组成2.3 网络位长度决定网段 3.分类3.1 A类3.2 B类3.3 C类3.4 D类3.5 E类 4.特殊地址…

Linux虚拟机磁盘扩容

Linux虚拟机磁盘扩容 问题起源 在使用linux系统开发时遇到文件无法创建的问题&#xff0c;根据提示发现是磁盘空间不足。 使用df -h查看具体磁盘使用情况。 针对这个问题&#xff0c;有两种解决方案&#xff1a; 使用du -sh ./*可以查看当前工作目录下各文件的占用空间大小…

【USRP】Ettus USRP X440 (USRP软件无线电设备)

Ettus USRP X440 30 MHz至4 GHz&#xff0c;1.6 GHz 带宽&#xff0c;基于GPS的OCXO&#xff0c;USRP软件无线电设备 - Ettus USRP X440是一款USRP软件无线电(SDR)设备&#xff0c;可帮助您集成硬件和软件&#xff0c;对高性能、多通道、宽带信号生成和分析系统进行原型验证。…

InnoDB的Buffer

一、Buffer内存结构 MySQL 服务器启动的时候就向操作系统申请了一片连续的内存&#xff0c;默认128M&#xff0c;可通过从参数修改。 [server] innodb_buffer_pool_size 268435456 1.1 控制块 控制块包括该页所属的 表空间编号、页号、缓存页在 Buffer Pool 中的地址、链表…

14:00面试,14:06就出来了,问的问题有点变态

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%,…