剑指offer5.1——O(n)的复杂度合并两个有序数组
#include"iostream"
#include"stdio.h"
using namespace std; int* ArrayMerge(int *a,int aLen,int *b,int bLen)
{
int aIndex=aLen-,bIndex=bLen-,newIndex=aLen+bLen-; while(aIndex>=&&bIndex>=)
{
if(a[aIndex]>b[bIndex])
{
a[newIndex--]=a[aIndex--];
}
else
{
a[newIndex--]=b[bIndex--];
}
}
while(aIndex>=)
{
a[newIndex--]=a[aIndex--];
}
while(bIndex>=)
{
a[newIndex--]=b[bIndex--];
}
return a;
} void Test(char *testName,int *a,int aLen,int *b,int bLen,int *res,int aMaxLen)
{
if(testName!=nullptr)
cout<<"the "<<testName<<" begin:";
if(aLen+bLen>aMaxLen)
{
cout<<"out of range!"<<endl;
return;
}
if(a==nullptr || b==nullptr)
{
cout<<"the one of two arrays is NULL!"<<endl;
return;
}
if(aLen< || bLen<)
{
cout<<"error input"<<endl;
return;
}
int *getRes=ArrayMerge(a,aLen,b,bLen);
int i;
for(i=;i<aLen+bLen;i++)
{
// cout<<getRes[i]<<" ";
if(res[i]!=getRes[i]) break;
}
if(i<aLen+bLen)
cout<<"failed!"<<endl;
else
cout<<"passed!"<<endl;
} //a数组全排在b数组前面
void Test1()
{
int a[]={,,};//一定要指定a数组的大小
int b[]={,,};
int res[]={,,,,,};
Test("Test1",a,,b,,res,);
}
//a数组和b数组混合
void Test2()
{
int a[]={,,};
int b[]={,,};
int res[]={,,,,,};
Test("Test2",a,,b,,res,);
}
//a数组为空
void Test3()
{
int a[]={};
int b[]={,,};
int res[]={,,};
Test("Test3",a,,b,,res,);
}
//b数组为空
void Test4()
{
int b[]={};
int a[]={,,};
int res[]={,,};
Test("Test4",a,,b,,res,);
} //a、b数组为空
void Test5()
{
int a[]={};
int b[]={};
int res[]={};
Test("Test5",a,,b,,res,);
}
//a、b数组为空
void Test6()
{
int *a=nullptr;
int b[]={};
int res[]={};
Test("Test6",a,,b,,res,);
}
int main()
{
Test1();
Test2();
Test3();
Test4();
Test5();
Test6();
return ;
}
剑指offer5.1——O(n)的复杂度合并两个有序数组的更多相关文章
- 剑指offer——python【第16题】合并两个有序链表
题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-& ...
- 《剑指offer》第二十五题(合并两个排序的链表)
// 面试题25:合并两个排序的链表 // 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按 // 照递增排序的.例如输入图3.11中的链表1和链表2,则合并之后的升序链表如链 ...
- 【剑指offer】以o(1)复杂度删除啊链表的节点,C++实现(链表)
0.简介 本文是牛客网<剑指offer>刷题笔记. 1.题目 在O(1)时间内删除链表节点. 2.思路 前提条件:删除的节点在链表上:边界条件:链表 ...
- 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ
题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均 ...
- 【剑指Offer面试编程题】题目1505:两个链表的第一个公共结点--九度OJ
题目描述: 输入两个链表,找出它们的第一个公共结点. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的两个链表 ...
- 剑指offer--5.用两个栈实现队列
题目:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: # 栈A用来作入队列# 栈B用来出队列,当栈B为空时,栈A全部出栈到栈B,栈B再出栈(即出队列) v ...
- 剑指offer5
题干:用两个栈实现一个队列,完成队列的push和pop操作,队列中的元素是int型 思路:首先我初始化两个栈,一个栈往里面添加数据,如果这个栈中不为空就弹出数据压入到第二个栈中,弹出第二个栈中的数据 ...
- 剑指offer5 从尾到头打印链表
错误代码: class Solution { public: vector<int> printListFromTailToHead(ListNode* head){ vector< ...
- 剑指offer--5.变态跳台阶
WA了一次,错误数据4,输出8,怎么真么熟悉呢?改个return过了,OMG ------------------------------------------------------------- ...
随机推荐
- Install zlib/libpng/jpeg/freetype/libgd/GD on Mavericks即mac10.9(转)
转自:http://wangqinhu.com/install-gd-on-mavericks/ Various applications depend on library GD, however, ...
- 很好的QSqlDatabase问题说明,关于连接错误(转)
QSqlDatabasePrivate::addDatabase: duplicate connection name 'qt_sql_default_connection', old connect ...
- 编写高质量代码改善C#程序的157个建议——建议23:避免将List<T>作为自定义集合类的基类
建议23:避免将List<T>作为自定义集合类的基类 如果要实现一个自定义的集合类,不应该以一个FCL集合类为基类,反而应扩展相应的泛型接口.FCL结合类应该以组合的形式包含至自定义的集合 ...
- HTML、CSS、JavaScript拾遗
1.html元素中,如果有文本存在,当元素大小不足以容纳文本时,文本会进行强制换行.比如说设置页面不出现滚动条,body的overflow为hidden时,或者scroll为no时,span在超过页面 ...
- ORACLE_EBS_R12_采购到入库所经历的表
--采购到入库所经历的表 --0.请购单 --创建请购单方式有 --a.从外挂系统导入请购的接口表PO_REQUISITIONS_INTERFACE_ALL,并允许请求(名称:导入申请) SELECT ...
- android eclipse 报error loading /system/media/audio/ xxx 错的解决办法。
只针对 报错..error loading /system/media/audio/ xxx.ogg 一步操作 解决烦恼..把 模拟器声音 关了..所有的错 都没了. 包括 关闭按键声音,触摸声音 ...
- 2014-4-2解决无法访问github和google的问题
github是个好地方,但是上不去就蛋疼了. 今天github上不去,果断f12下,看下network,发现里面好多请求都是指向 github.global.ssl.fastly.net这个域名的,然 ...
- windows phone 8 新增功能:从一个应用程序启动另一个程序(file association 和 Protocol association两种方式)
一. 启动手机预装内置程序打开文件file association 这里以打开word文档为例子 string fileToLaunch = @"HelloKitty.docx"; ...
- Windows + python + pywinauto 搭建自动化测试环境
最近公司在搞测试, 单纯的人工去测试需要花费太多的人力物力以及时间, 所以准备用Python做一套自动化测试来使用. 本文中使用的是Python3.6.8 和 pywin32-224.win-amd ...
- 将.net core 发布到Linux上的一些坑
目前遇到的,之后遇到再加 1.时间格式要用.ToString("yyyy-MM-dd HH:mm:ss"); 2.文件路径要用Path.Combine(),IHostingEnvi ...