当前位置: 首页 > news >正文

LeetCode 88. 合并两个有序数组

文章目录

  • 一、题目
  • 二、C# 题解

一、题目

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

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

  注意:最终,合并后数组不应由函数返回,而是存储在数组 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 中。

二、C# 题解

  非常优雅的几行代码hh,很简单的题目了:

public class Solution {public void Merge(int[] nums1, int m, int[] nums2, int n) {int i = m - 1, j = n - 1, k = m + n - 1;while (i >= 0 && j >= 0) nums1[k--] = nums1[i] > nums2[j] ? nums1[i--] : nums2[j--];while (j >= 0) nums1[k--] = nums2[j--];return;}
}
  • 时间复杂度: O ( m + n ) O(m+n) O(m+n)
  • 空间复杂度: O ( 1 ) O(1) O(1)
http://www.lryc.cn/news/164257.html

相关文章:

  • C语言实现扫雷小游戏
  • 【linux基础(五)】Linux中的开发工具(上)---yum和vim
  • C++学习之list的实现
  • 一种高效且节约内存的聚合数据结构的实现
  • 机器学习(10)---特征选择
  • Python之数据库(MYSQL)连接
  • 【建站教程】使用阿里云服务器怎么搭建网站?
  • 【自然语言处理】关系抽取 —— MPDD 讲解
  • 深入理解JVM虚拟机第三篇:JVM的指令集架构模型和JVM的生命周期
  • [小尾巴 UI 组件库] 组件库配置与使用
  • Linux系统中fork()函数的理解
  • Linux网络编程:网络协议及网络传输的基本流程
  • 【大数据之Kafka】十、Kafka消费者工作流程
  • 如何确保ChatGPT的文本生成对特定行业术语的正确使用?
  • 行业追踪,2023-09-11
  • LVS + Keepalived群集
  • springboot将jar改成war
  • 从9.10拼多多笔试第四题产生的01背包感悟
  • 搭建自己的OCR服务,第一步:选择合适的开源OCR项目
  • 【C++】VScode配置C/C++语言环境(简洁易懂版)
  • 【hive】—原有分区表新增加列(alter table xxx add columns (xxx string) cascade;)
  • verilog学习笔记7——PMOS和NMOS、TTL电路和CMOS电路
  • Java知识点二
  • 基于单片机压力传感器MPX4115检测-报警系统-proteus仿真-源程序
  • Pytorch02 神经网路搭建步骤
  • 【源码】JavaWeb+Mysql招聘管理系统 课设
  • Java中级编程大师班<第一篇:初识数据结构与算法-数组(2)>
  • 杰哥教你面试之一百问系列:java集合
  • 【数据结构】树和二叉树概念
  • C盘清理教程