佛山网站建设哪家公司好/微信朋友圈广告代理

佛山网站建设哪家公司好,微信朋友圈广告代理,青岛做网站企业,dede做的网站打不开【美团面试题】合并两个有序数组题目描述给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组划重点初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 有足够的空间(空间大小大于…

b5711453cc09d4aaa404548a196bda39.png

【美团面试题】合并两个有序数组

题目描述

给你两个有序整数数组 nums1nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组

划重点

  • 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。
  • 你可以假设 nums1 有足够的空间(空间大小大于或等于 m + n)来保存 nums2 中的元素

示例

示例 1:

输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3输出:[1,2,2,3,5,6]

提示:

-10^9 <= nums1[i], nums2[i] <= 10^9
nums1.length == m + n
nums2.length == n

解题思路

两个数组分别有序,且最终要输出的是数组一解法如下

14292311d9fded06bda81ba209d6b24b.png

解法

解法一: 暴力法

将数组nums2中的元素全部添加到nums1中,对nums1做排序

bac5e2ca57c940d742d592f0f3f50a93.png

解法二:倒插法

已知条件

  1. Nums1 的剩余空间刚好可以存放nums2的元素
  2. nums1和nums2都是有序的。
  3. 已知两个数组的元素个数

通过分析一直条件我们可以发现,nums1存在一定的后置空间,因此我们可以考虑通过对两个数组的末位元素进行对比,然后从后往前插入到nums1中的方法。

所以我们可以用三个指针P0,P1,P2来遍历数组:

P0: 记录nums1的新元素位置

P1: 记录nums1原数组的元素位置

P2: 记录nums2原数组的元素位置

设置遍历条件 (p1 >= 0 && p2 >= 0)

比较指针指向的元素大小,将较大的元素放入指针P0的位置,同时移动P0和较大元素的指针。

当遍历条件为 false时 存在三种情况

  1. P1 == 0 P2 ==0 数组都遍历完了
  2. P1 == 0 P2 > 0 Nums2没有遍历完
  3. P1 > 0 P2 ==0 Nums1没有遍历完

当结果出现1和3时,nums1恰好是合并排序的最终结果

当出现结果2时,说明nums2中还有剩余元素,所以继续移动指针P1,将nums2剩余元素插入到nums1中就行

代码实现

   public void merge(int[] nums1, int m, int[] nums2, int n) {int p1 = m - 1;int p2 = n - 1;int p0 = m + n - 1;while (p1 >= 0 && p2 >= 0) {if (nums1[p1] >= nums2[p2]) {nums1[p0] = nums1[p1];p1--;} else {nums1[p0] = nums2[p2];p2--;}p0--;}// 处理 nums2 没有遍历完的情况while (p2 >= 0) {nums1[p0--] = nums2[p2--];}}

复杂度分析

时间复杂度:

O(n + m)

空间复杂度:

O(1)

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

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

相关文章

git切换用户密码_Java小白入门,常用Git命令有哪些?

Git简介Git是一个开源的分布式版本控制系统&#xff0c;用于敏捷高效地处理任何或小或大的项目。Git是 Linus Torvalds 为了帮助管理 Linux 内核开发而开发的一个开放源码的版本控制软件。Git与常用的版本控制工具 CVS, Subversion 等不同&#xff0c;它采用了分布式版本库的方…

有几种部署模式_来!PyFlink 作业的多种部署模式

关于 PyFlink 的博客我们曾介绍过 PyFlink 的功能开发&#xff0c;比如&#xff0c;如何使用各种算子(Join/Window/AGG etc.)&#xff0c;如何使用各种 Connector(Kafka, CSV, Socket etc.)&#xff0c;还有一些实际的案例。这些都停留在开发阶段&#xff0c;一旦开发完成&…

office2007每次打开都配置进度_office2007 每次打开word,excel等显示正在配置Office Professional Plus 2007的解决方...

有时候 Office2007打开文档&#xff0c;每次都提示需要安装。配置&#xff0c;配置完成之后&#xff0c;下次打开又需要配置点击取消就不能打开。非常的烦。ffice2007下载后为什么每次打开总需要置&#xff1f;office2007每次打开都要正在配置&#xff1f;其实不需要重新安装可…

consul 文件夹无法显示_consul集群搭建参考

1.官网下载安装包https://releases.hashicorp.com/consul/1.4.3/consul_1.4.3_linux_amd64.zip2.部署节点如下192.168.8.142 sxconsul1192.168.8.143 sxconsul2192.168.8.144 sxconsul33.解压之后的consul是一个可执行文件&#xff0c;复制到/usr/local/bin/ 下4.三台服务器创建…

mysql linux环境安装_MySQL Linux环境的安装配置

在Kali中已经内置了MySQL(镜像可以从mysql.com/downloads/ 下载安装)奇怪的是博主我的kali内置的是mariaDB数据库&#xff0c;所以我也懒得弄MySQL了&#xff01;直接mariaDB吧&#xff01;差不多【PS:据博主所致&#xff0c;mariaDB的操作和MySQL一样哦&#xff01;在这后面有…

define定义的是什么类型_DEFINE_PROFILE用法介绍(1)

“ 长风破浪会有时&#xff0c;直挂云帆济沧海&#xff01;”01—概述可以使用DEFINE_PROFILE定义一个自定义边界配置文件或单元格区域条件&#xff0c;该条件随空间坐标或时间而变化。可以自定义的变量如下:速度&#xff0c;压力&#xff0c;温度&#xff0c;湍流动能&#xf…

如何判断输入的是字符还是数字_[Leetgo]判断字符串是否为数字

题解分析代码实现实现一个函数用来判断字符串是否表示数值(包括整数和小数)。题解分析一个标识数字的字符串可能包括以下字符类型&#xff1a;空格&#xff1b;数组&#xff1a;0~9&#xff1b;正负号小数点幂符号&#xff1a;e/E&#xff1b;为了解决此类问题&#xff0c;需要…

mysql语句转为sql语句_MySQL 的分页查询 SQL 语句(转)

转自 https://www.cnblogs.com/wbxk/p/10644766.htmlMySQL一般使用 LIMIT 实现分页。基本语句为&#xff1a;SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...在中小数据量的情况下&#xff0c;这样的SQL足够用了&#xff0c;唯一需要注意的问题就是确保使用了索引。举例…

mysql查询选课最少成绩最高_MySQL 练习

最近在学习MYSQL 数据库&#xff0c;在此mark 一下做过的sql 相关练习表结构如下&#xff1a;teacher表tidtnameclass表cidcaptioncourse表cidcnameteacher_idstudent表sidgenderclass_idsnamescore表sidstudent_idcourse_idnumclass :teacher : course : student :score : 根…

java 判断子类_java判断class是否是某个类的子类或父类

Class c = ArrayList.class; c.isPrimitive(); //判断c是否为基本数据类型 c.isAssignableFrom(List.class); //判断c是否是List类的子类或父类 c.getGenericType(); //得到泛型类型 免费学习视频分享:java视频教程 实例:通过反射得到List 集合中的泛型类型package com.zf.ta…

Java游戏有易筋经_易筋经- JavaWeb-1

JavaScript一种直译式脚本语言&#xff0c;是一种动态类型、弱类型、基于原型的语言&#xff0c;内置支持类型。它的解释器被称为JavaScript引擎&#xff0c;为浏览器的一部分&#xff0c;广泛用于客户端的脚本语言组成部分:ECMAScript:js基础语法(规定 关键字 运算符 语句 函数…

java导出hbase表数据_通用MapReduce程序复制HBase表数据

编写MR程序&#xff0c;让其可以适合大部分的HBase表数据导入到HBase表数据。其中包括可以设置版本数、可以设置输入表的列导入设置(选取其中某几列)、可以设置输出表的列导出设置(选取其中某几列)。原始表test1数据如下&#xff1a;每个row key都有两个版本的数据&#xff0c;…

java服务器和linux_在Linux下开一个Java服务器(使用CatServer Pro)

引言Linux开服具有快速&#xff0c;高效&#xff0c;性能等特点&#xff0c;而Windows虽然简单&#xff0c;但是不具备Linux良好的性能。本教程就说明一下简单的Linux开服方式(需要教程的人&#xff0c;如果你学会后&#xff0c;请无偿帮助更多的人。)服务器准备首先。先准备一…

我的世界java版游戏崩溃_我的世界全攻略之-游戏崩溃的解决方法

我的世界崩溃怎么办&#xff1f;下面吾爱网小编给大家带来我的世界无法正常启动的解决方法,需要的朋友可以参考下。我的世界作为许多玩家都十分喜爱的模拟经营沙盘类游戏,经常有玩家反映在玩我的世界的时候,游戏总是会出现崩溃或者无法启动的情况,玩家在遇到的时候不知道怎么办…

vue3 新项目 - 搭建路由router

创建router/index 文件 main.ts 安装 router 然后 在 app下面 去 设置 路由出口

java如何获得相反的颜色_javascript – 如何根据当前颜色生成相反的颜色?

更新&#xff1a;GitHub上的生产就绪代码.我就是这样做的&#xff1a;>将HEX转换为RGB>反转R,G和B组件>将每个组件转换回HEX>用零和输出填充每个组件.function invertColor(hex) {if (hex.indexOf(#) 0) {hex hex.slice(1);}// convert 3-digit hex to 6-digits.…

wamp php启动不成功,wamp的mysql 启动失败解决

wamp启动失败&#xff0c;查看原因是mysql 启动失败首先查看mysql的启动日志命令&#xff1a;mysqld --console知道error报错的地方&#xff1a;然后百度了此报错&#xff0c;解决方法在my.ini中添加innodb_force_recovery 1发现这个会影响insert需要设置为 innodb_force_reco…

php复选框样式,如何自定义checkbox样式?附代码

本篇文章给大家带来的内容是关于如何自定义checkbox样式&#xff1f;附代码&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。修改原生checkbox样式。效果原理1.利用CSS3属性 appearance。该属性(强制)更改(改变)默认(原生)样式…

JAVA用数据留给出师表排序,如果诸葛亮会编程,用Java写出师表...

继上一篇 "如果诸葛亮用C#写出师表..."后&#xff0c;站长想自己的第一语言是Java&#xff0c;虽然平时工作上用的不多&#xff0c;也用Java实现一遍吧&#xff0c;改改就是了&#xff0c;无非就是:C#的Console.WriteLine改为Java的System.out.println&#xff1b;C#…

linux下的安装命令行工具下载,linux系统程序安装(二)yum工具2-yum源及包下载

继续我们的yum工具应用之旅&#xff0c;yum工具之所以方便就是因为有方便的在线云库&#xff0c;实际工作中我们可能没办法链接互联网&#xff0c;或者我们想安装的程序原生源那么我们能不能用其他方式应用方便的yum源呢&#xff1f;一、使用光盘作为yum源1、将光盘挂载到/mnt目…