原文:两个有序数组合并成一个有序数组(要求时间复杂度为O(n))

面试题: 怎样把两个有序数组合并成有序数组呢 逻辑步骤: .假设两个数组为A和B .A和B都是从小到大的顺序进行排列 .我们可以直接比较两个数组的首元素,哪个小就把这个小元素放入可变数组。 .把小元素所在的数组中的这个元素删除。 .继续比较两个数组中的首元素,直到有一个数组为空。那么就停止进行比较。把另外一个不空的数组元素全部放入可变数组中即可。 实现代码: NSMutableArray arrA ...

2019-03-12 11:15 0 1891 推荐指数:

查看详情

iOS常用算法之两个有序数组合并, 要求时间复杂度为0(n)

思路: 常规思路: 先将一个数组作为合并后的数组, 然后遍历第二个数组的每项元素, 一一对比, 直到找到合适的, 就插入进去;   简单思路: 设置数组C, 对比A和B数组的首项元素, 找到最小的, 就放入数组C,依次进行下去. 代码如下: 执行代码, 输入输出 ...

Thu Jul 18 04:36:00 CST 2019 0 543
两个有序数组合并成一个有序数组

[注意]把B数组合并到A数组之中 种思路 定义一个数组,长度为两个数组长度之和,将两个数组都copy到新数组,然后排序。 给两个数组分别定义一个下标,最大长度是数组长度减一,按位循环比较两个数组,较小元素的放入新数组,下标加一(注意,较大元素对应的下标不加一),直到 ...

Tue Nov 24 02:21:00 CST 2020 0 415
两个有序数组合并成一个新的有序数组

两个有序数组合并成一个新的有序数组,不用系统的API,其实有多种方法可以实现。 1.先把两个有序数组合并成一个新的数组,再进行排序,使其成为一个新的有序数组,此方法程序可以运行,但应该不算是最优的方法。 2.对两个有序数组进行比较,然后依次放入一个新的数组中去,只用一次循环 ...

Mon Sep 09 07:27:00 CST 2013 0 3384
有序数组和无序数组去重时间复杂度

有序数组查找是O(logn),但是去重的话需要先查找删除位再把删除位后的数据前移,这一步复杂度O(n),因此有序数组去重的总复杂度O(n) 无序数组去重,以C++的duplicate函数为例,先对无序数组排序,时间复杂度O(nlogn),然后有序数组去重,则总复杂度O(nlogn ...

Sun Jun 21 05:38:00 CST 2020 0 615
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM