#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)的复杂度合并两个有序数组的更多相关文章

  1. 剑指offer——python【第16题】合并两个有序链表

    题目描述 将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例: 输入:1->2->4, 1->3->4 输出:1->1-& ...

  2. 《剑指offer》第二十五题(合并两个排序的链表)

    // 面试题25:合并两个排序的链表 // 题目:输入两个递增排序的链表,合并这两个链表并使新链表中的结点仍然是按 // 照递增排序的.例如输入图3.11中的链表1和链表2,则合并之后的升序链表如链 ...

  3. 【剑指offer】以o(1)复杂度删除啊链表的节点,C++实现(链表)

    0.简介       本文是牛客网<剑指offer>刷题笔记. 1.题目       在O(1)时间内删除链表节点. 2.思路         前提条件:删除的节点在链表上:边界条件:链表 ...

  4. 【剑指Offer面试编程题】题目1349:数字在排序数组中出现的次数--九度OJ

    题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均 ...

  5. 【剑指Offer面试编程题】题目1505:两个链表的第一个公共结点--九度OJ

    题目描述: 输入两个链表,找出它们的第一个公共结点. 输入: 输入可能包含多个测试样例. 对于每个测试案例,输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的两个链表 ...

  6. 剑指offer--5.用两个栈实现队列

    题目:用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: # 栈A用来作入队列# 栈B用来出队列,当栈B为空时,栈A全部出栈到栈B,栈B再出栈(即出队列) v ...

  7. 剑指offer5

    题干:用两个栈实现一个队列,完成队列的push和pop操作,队列中的元素是int型 思路:首先我初始化两个栈,一个栈往里面添加数据,如果这个栈中不为空就弹出数据压入到第二个栈中,弹出第二个栈中的数据 ...

  8. 剑指offer5 从尾到头打印链表

    错误代码: class Solution { public: vector<int> printListFromTailToHead(ListNode* head){ vector< ...

  9. 剑指offer--5.变态跳台阶

    WA了一次,错误数据4,输出8,怎么真么熟悉呢?改个return过了,OMG ------------------------------------------------------------- ...

随机推荐

  1. c# 多维数组、交错数组(转化为DataTable)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...

  2. Filter过滤器简单学习

    Servlet 过滤器方法 过滤器是一个实现了 javax.servlet.Filter 接口的 Java 类.javax.servlet.Filter 接口定义了三个方法: 序号 方法 & ...

  3. Asp.NET中把DataTable导出为Excel ,中文有乱码现象解决办法

    //DataTable为要导出的数据表   DataGrid dg = new DataGrid();                dg.DataSource = DataTable;        ...

  4. requests基础

    爬虫的基本原理:爬虫本质上是模拟人浏览信息的过程,只不过他通过计算机来达到快速抓取筛选信息的目的.所以我们想要写一个爬虫,最基本的就是要将我们需要抓取信息的网页原原本本的抓取下来.这个时候就要用到re ...

  5. 编写高质量代码改善C#程序的157个建议——建议58:用抛出异常代替返回错误代码

    建议58:用抛出异常代替返回错误代码 CLR异常机制的优点: 正常控制流会被立即中止,无效值或状态不会在系统中继续传播. 提供了统一的处理错误的方法. 提供了在构造函数.操作符重载及属性中报告异常的遍 ...

  6. Jackson Streaming API to read and write JSON

    Jackson supports read and write JSON via high-performance Jackson Streaming APIs, or incremental mod ...

  7. MVC 基本概念

    1. M(Model-模型): 数据模型. 负责定义信息格式与信息反问的界面,包括商业逻辑,数据反问.(可以理解成是三层模式中的 BLL+DAL ) 2. V(View-视图): 负责用户界面 UI ...

  8. asp.net 中input radio checked 无效

    把Jq代码中的$(...).attr("checked",true) 换成$(...).prop("checked",true) ,

  9. 【转】微信中MMAlert(半透明底部弹出菜单)的使用介绍

    原文地址:http://blog.csdn.net/singwhatiwanna/article/details/8892930 果大家时常用过微信或者用过iphone,就会发现有种从底部弹出的半透明 ...

  10. C语言编程学习开发的俄罗斯方块小游戏

    C语言是面向过程的,而C++是面向对象的 C和C++的区别: C是一个结构化语言,它的重点在于算法和数据结构.C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现 ...