object-C 解答算法:合并两个有序数组(leetCode-88)

合并两个有序数组(leetCode-88)

题目如下图:(也可以到leetCode上看完整题目,题号88)

首先搞懂,什么叫“非递减顺序

非递减顺序,是指一个序列中的元素从前往后(或从左到右)保持不减少或相等。 这意味着序列中的元素可以保持相同的值,但不会突然减小。例如,序列1, 2, 3, 3, 4, 5就是非递减的,因为每个元素都大于或等于前一个元素。这与递增顺序不同,递增顺序要求每个元素都严格大于前一个元素。在编程和算法中,非递减顺序有时用于合并或处理数组,确保操作后的数组仍然保持这种顺序.

解题方法一:

明白了非递减顺序之后,第一想法其实就是合并数组后,将数组里的整数进行排序就行;

不过这里的合并函数是有说法的,因为题干的“注意”说了,nums1 的初始长度为m+n,m个才是需要合并的元素,所以合并的时候,我们不需要管 nums1 数组里 index=m之后的元素. 同样的,我们也不需要管nums2数组里 index=n之后的元素.所以合并的逻辑应该为;

即: (⚠️:我这里稍微改了示例1中的数字,因为示例1中的m和n 都为3, 会容易让人误解,实际上只要nums的长度m+n,那么n随意等于多少,可以是1,2,3,4,5……)

    int m = 3;int n = 2;NSMutableArray * array1 = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3",@"0",@"0", nil];NSMutableArray * array2 = [[NSMutableArray alloc]initWithObjects:@"2",@"5",@"9",@"6", nil];for (int i = 0; i < n; i ++){array1[m+i] = array2[i];}//接下来对array1进行排序,有冒泡排序,选择排序,插入排序等等,可以参考我主页的排序介绍

排序的方法看我的其他文章:

冒泡排序:CSDN

选择排序:CSDN

解题方法二:

直接比较两个数组的每个元素的大小,把最小的放在前面,依次排列 添加到一个新的数组tempArray;如果nums1里 已经添加了m个元素,则说明array1里的其他元素不可以再添加,则后面添加的都是nums2的元素,同理可得,如果nums2已经添加了n个元素,则后面添加的都是nums1的元素.

最后得到的tempArray即是合并后的“非递减顺序”排列,但是题干要求最终的结果要体现在nums1.所以再把tempArray 的元素赋值给nums1元素:

代码如下:

- (void)twoArray1:(NSMutableArray *)array1 Array2:(NSMutableArray *)array2 M:(int)m N:(int)n
{NSMutableArray * tempArray = [[NSMutableArray alloc]init];int k = n+m;for (int index = 0 ,arrayIndex1 = 0, arrayIndex2 = 0; index < k; index++) {if (arrayIndex1 >= m){//array1数组已经取完了,剩下的完全取array2数组即可tempArray[index] = array2[arrayIndex2];arrayIndex2 ++;}else if (arrayIndex2 >= n){ //array2数组已经取完了,剩下的完全取array1数组即可tempArray[index] = array1[arrayIndex1];arrayIndex1 ++;}else if ([array1[arrayIndex1] intValue] < [array2[arrayIndex2] intValue]){//array1数组的元素值小于array2,则取array1数组的值tempArray[index] = array1[arrayIndex1];arrayIndex1 ++;}else{ //array2数组的元素值小于array1,则取array2数组的值tempArray[index] = array2[arrayIndex2];arrayIndex2 ++;}}//最后把tempArray的元素赋值到array1上for (int i = 0; i < k; i ++){array1[i] = tempArray[i];}}

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

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

相关文章

网络云服务1

第一章 虚拟私有云 前言 在整个ICT基础设施的发展过程中&#xff0c;网络资源一直是必不可少的存在。有了网络资源&#xff0c;设备与设备间&#xff0c;系统与系统间才有了交流&#xff0c;才能更好地去支撑企业业务的快速发展。本章将带领大家了解华为云上的网络服务。 网…

四个节点即可实现的ComfyUI批量抠图工作流

原文链接&#xff1a;ComfyUI面部修复完全指南 (chinaz.com) 下图就是批量抠图的工作流 虽然工作流很简单&#xff0c;但是我们前提还是需要安装好我们的节点 首先安装我们的抠图节点 安装 BiRefNet 所需依赖&#xff1a;timm&#xff0c;如已安装无需运行 requirements.txt…

如何写好建模论文

如何写好建模论文 一、 写好数模答卷的重要性 1.评定参赛队的成绩好坏、高低&#xff0c;获奖级别&#xff0c; 数模答卷&#xff0c; 是唯一依据。 2.答卷是竞赛活动的成绩结晶的书面形式。 3.写好答卷的训练&#xff0c;是科技写作的一种基本训练。 二、 答卷的基本内容&…

【HTML入门】第十五课 - form表单(下)表单控件们(二)

上一小节我们说了文本输入框&#xff0c;密码输入框&#xff0c;数值型输入框&#xff0c;还有大的文本域。这一小节&#xff0c;我们继续说form表单中的一些常用的控件们。 目录 1 单选按钮 2 复选框 3 下拉列表选择 1 单选按钮 单选按钮&#xff0c;就是说一组按钮中&am…

R-CNN 中的区域建议网络

区域建议网络&#xff08;Region Proposal Network&#xff0c;RPN&#xff09;是R-CNN&#xff08;Regions with Convolutional Neural Networks&#xff09;架构中的一个关键组件&#xff0c;特别是在Faster R-CNN中。RPN的主要任务是生成可能包含物体的区域提议&#xff0c;…

buuctf-reverse write-ups (2)

文章目录 buu097-[SUCTF2019]hardcpp状态变量常量值与基本块的对应关系状态变量更新还原控制流程序修复进一步调试修复效果全局变量混淆去除 buu097-[SUCTF2019]hardcpp 这是一个简单的C程序&#xff0c;但带有大量的控制流平坦化混淆。下面我将从头开始编写用于解决此类混淆问…

FairGuard游戏加固入选《嘶吼2024网络安全产业图谱》

2024年7月16日&#xff0c;国内网络安全专业媒体——嘶吼安全产业研究院正式发布《嘶吼2024网络安全产业图谱》(以下简称“产业图谱”)。 本次发布的产业图谱&#xff0c;共涉及七大类别&#xff0c;127个细分领域。全面展现了网络安全产业的构成和重要组成部分&#xff0c;探…

react 快速入门思维导图

在掌握了react中一下的几个步骤和语法&#xff0c;基本上就可以熟练的使用react了。 1、组件的使用。react创建组件主要是类组件和函数式组件&#xff0c;类组件有生命周期&#xff0c;而函数式组件没有。 2、jsx语法。react主要使用jsx语法&#xff0c;需要使用babel和webpa…

二染色,CF 1594D - The Number of Imposters

目录 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 二、解题报告 1、思路分析 2、复杂度 3、代码详解 一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 1594D - The Number of Imposters 二、解题报告 1、思路分析 并查集&…

uniapp封装请求拦截器,封装请求拦截和响应拦截的方法

首先我们先看一下uni官方给开发者提供的uni.request用来网络请求的api 1 2 3 4 5 6 7 8 9 uni.request({ url: , method: GET, data: {}, header: {}, success: res > {}, fail: () > {}, complete: () > {} }); 可以看到我们每次请求数据的时候都需…

通过MATLAB控制TI毫米波雷达的工作状态之TLV数据解析及绘制

前言 前一章博主介绍了如何基于设计视图中的这些组件结合MATLAB代码来实现TI毫米波雷达数据的实时采集。这一章将在此基础上实现TI毫米波雷达的TLV数据解析。过程中部分算法会涉及到一些简单的毫米波雷达相关算法,需要各位有一定的毫米波雷达基础。 TLV数据之协议解析 紧着…

el-cascader数据回显失败

el-cascader选中数据第一次回显正常&#xff0c;当选中数据改变再次回显时失败&#xff0c;呈现的还是上次的选中数据 如图 常用的方法this. n e x t T i c k ( ( ) > ) 跟 t h i s . nextTick(() > {})跟this. nextTick(()>)跟this.forceUpdate();强制刷新数据都无…

Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; HadoopHDFSMapReduceHiveFlumeSqoopZookeeperHBase 正在 章节内容 上一节我们完成了&#xff1a; HBase …

关于dom4j主节点的xmlns无法写入的问题

由于最近需要做一个xml的文件&#xff0c;使用dom4j的时候发现了一个bug&#xff0c;就是我的xmlns根本无法写入到xml的头部标签中。 Element element document.addElement("test"); element.addAttribute("xmlns", "urn:Declaration:datamodel:sta…

【中项第三版】系统集成项目管理工程师 | 第 5 章 软件工程① | 5.1 - 5.3

前言 第5章对应的内容选择题和案例分析都会进行考查&#xff0c;这一章节属于技术的内容&#xff0c;学习要以教材为准。 目录 5.1 软件工程定义 5.2 软件需求 5.2.1 需求的层次 5.2.2 质量功能部署 5.2.3 需求获取 5.2.4 需求分析 5.2.5 需求规格说明书 5.2.6 需求变…

人工智能算法工程师(中级)课程12-PyTorch神经网络之LSTM和GRU网络与代码详解1

大家好,我是微学AI,今天给大家介绍一下人工智能算法工程师(中级)课程12-PyTorch神经网络之LSTM和GRU网络与代码详解。在深度学习领域,循环神经网络(RNN)因其处理序列数据的能力而备受关注。然而,传统的RNN存在梯度消失和梯度爆炸的问题,这使得它在长序列任务中的表现不尽…

高速网络技术变革,RoCE取代IB之路

RoCE取代IB&#xff1a;为何之前是IB&#xff0c;现在是RoCE&#xff1f; 以太网在AI算力中的Why、How和What”。 超以太网联盟&#xff08;UEC&#xff09;由Linux基金会和联合开发基金会共同发起&#xff0c;旨在超越传统以太网功能。通过RDMA和RoCE等技术&#xff0c;UEC为…

SMTP服务器地址与端口号有哪些关系与区别?

SMTP服务器地址如何正确配置&#xff1f;怎么验证服务器的地址&#xff1f; 了解SMTP服务器地址与端口号的关系与区别对于确保邮件系统的正常运作至关重要。AokSend将详细探讨这两者之间的关系和区别&#xff0c;并解释它们在邮件传输过程中的重要性。 SMTP服务器地址&#x…

PHP萌宠之家微信小程序系统源码

&#x1f43e;萌宠之家微信小程序&#x1f43e; —— 铲屎官们的温馨小窝✨ &#x1f3e0;【一键开启萌宠乐园】&#x1f3e0; 亲们&#xff0c;是不是每次刷手机都忍不住想看看那些软萌可爱的毛孩子&#xff1f;现在&#xff0c;有了“萌宠之家”微信小程序&#xff0c;你的…

两种调用方法可以让Contact form 7表单在任意地方显示

Contact form 7是wordpress建站过程中最常用到的插件之一&#xff0c;不过&#xff0c;在Contact form 7调用的时候&#xff0c;有些新手还是搞不太清楚它的调用方法。下面简站wordpress小编&#xff0c;就把常用的两种调用方法&#xff0c;分享给大家&#xff1a; Contact fo…