两个有序数组合并成一个有序数组(要求时间复杂度为O(n))
面试题: 怎样把两个有序数组合并成有序数组呢
逻辑步骤:
1.假设两个数组为A和B
2.A和B都是从小到大的顺序进行排列
**
1.我们可以直接比较两个数组的首元素,哪个小就把这个小元素放入可变数组。
2.把小元素所在的数组中的这个元素删除。
3.继续比较两个数组中的首元素,直到有一个数组为空。那么就停止进行比较。把另外一个不空的数组元素全部放入可变数组中即可。
实现代码:
|
NSMutableArray *arrA = [NSMutableArray arrayWithArray:@[@1,@3,@5,@7,@9,@11]]; NSMutableArray *arrB = [NSMutableArray arrayWithArray:@[@8,@15,@17,@20,@22,@35]]; NSMutableArray *marr = [NSMutableArray array]; for(int i = 0; i< 100; i++) { NSNumber *anum = arrA[0]; NSInteger a = anum.integerValue; NSNumber *bnum = arrB[0]; NSInteger b = bnum.integerValue; if (a < b) { [marr addObject:[NSNumber numberWithInteger:a]]; [arrA removeObject:[NSNumber numberWithInteger:a]]; }else { [marr addObject:[NSNumber numberWithInteger:b]]; [arrB removeObject:[NSNumber numberWithInteger:b]]; } NSLog(@"循环了%d次",i); if (arrA.count == 0) { [marr addObjectsFromArray:arrB]; NSLog(@"新数组%@",marr); break; } if (arrB.count == 0) { [marr addObjectsFromArray:arrA]; NSLog(@"新数组%@",marr); break; } } |
两个有序数组合并成一个有序数组(要求时间复杂度为O(n))的更多相关文章
- python将两个数组合并成一个数组的两种方法的代码
内容过程中,把写内容过程中常用的内容收藏起来,下面的资料是关于python将两个数组合并成一个数组的两种方法的内容,希望能对小伙伴们有帮助. c1 = ["Red","G ...
- go语言:多个[]byte数组合并成一个[]byte
场景:在开发中,要将多个[]byte数组合并成一个[]byte,初步实现思路如下: 1.获取多个[]byte长度 2.构造一个二维码数组 3.循环将[]byte拷贝到二维数组中 package gst ...
- Python3将两个有序数组合并为一个有序数组
[本文出自天外归云的博客园] 第一种思路,把两个数组合为一个数组然后再排序,问题又回归到冒泡和快排了,没有用到两个数组的有序性.(不好) 第二种思路,循环比较两个有序数组头位元素的大小,并把头元素放到 ...
- 两个有序数组合并为一个有序数组---python
def merge(a, b): """ 合并2个有序数组,默认a,b都是从小到大的有序数组 """ # 1.临时变量 i, j = 0, ...
- 两个有序单链表合并成一个有序单链表的java实现
仅作为备注, 便于自己回顾. import java.util.Arrays; public class MergeSort { public static class LinkedNode<V ...
- 将两个各有n个元素的有序表归并成一个有序表,其最多的比较次数
最多的比较次数是当两个有序表的数据刚好是插空顺序的时候,比如:第一个序列是1,3,5,第二个序列是2,4,6,把第二个序列插入到第一个序列中,先把第二个序列中的第一个元素2和第一个序列依次比较,需要比 ...
- 求两个有序序列合并成新有序序列的中位数,求第k小数
此算法涉及一个重要数学结论:如果A[k/2-1]<B[k/2-1],那么A[0]~A[k/2-1]一定在第k小的数的序列当中,可以用反证法证明. 算法思想如下: 1,假设A长度为m,B长度为n, ...
- Python将两个数组合并成一个数组,多维数组变成一维数组
1.extend方法 c1 = ["Red","Green","Blue"] c2 = ["Orange"," ...
- sql server中如何将两个字段数据合并成一个字段显示(字段与字段添加特殊符号)
之前,我在做统计数据时,需要一个字段显示某月的订单数量和订单金额,要求组合成一个字段,用括号组合. 统计出来的结果大概是这样的,首先我们来创建一些模拟数据 ---创建订单表--- create tab ...
随机推荐
- jquery 写的图片左右连续滚动
<style type="text/css"> *{ margin:0; padding:0;} body { font:12px/1.8 Arial; color:# ...
- 富文本使用之wangEditor3
一.介绍: wangEditor —— 轻量级 web 富文本编辑器,配置方便,使用简单.支持 IE10+ 浏览器. 二.使用方式: 直接下载:https://github.com/wangfupen ...
- redis安装和简介(2)
承接上篇未完成的配置...此次使用的的 Redis-x64-3.2.100 版本 一.打开redis服务器 方式一:打开 redis-server.exe 显示如下图: 图中: 显示运行进程号.当前运 ...
- Redis启动问题解决方案
linux下redis overcommit_memory的问题 我在启动Redis的时候出现如下警告信息. 警告信息:WARNING overcommit_memory is set to 0! B ...
- kettle maven 配置
<properties> <kettle.version>6.1.0.4-225</kettle.version> </properties> < ...
- 报错Caused by: org.hibernate.AnnotationException: No identifier specified for entity:
Caused by: org.hibernate.AnnotationException: No identifier specified for entity:. 原因: 1.没有给实体类ID 解决 ...
- [转]表单提交:button input submit 的区别
博客转自于 http://harttle.com/2015/08/03/form-submit.html ,同时自己做了稍微改动 最近项目代码中的表单提交的方式已经百花齐放了,现在用这篇文章来整 ...
- [node.js学习]为node.js写的一个操作mysql的类
不支持一个对象在不同异步中使用,模仿的php框架 speedphp中的model模块 GaryMysql.js var mysql = require('mysql'); var pool = nul ...
- C#制作ActiveX浏览器插件.net
开发环境:VS2008 第一步 创建项目 新建一个项目,选择“Windows窗体控件库”,创建一个用户控件项目“ActiveXDemo”(注意,这里起名不能用中文,否则后面会出问题),里面有个用户控件 ...
- EF Core 2.0中Transaction事务会对DbContext底层创建和关闭数据库连接的行为有所影响
数据库 我们先在SQL Server数据库中建立一个Book表: CREATE TABLE [dbo].[Book]( ,) NOT NULL, ) NULL, ) NULL, ) NULL, [Cr ...