剑指offer48相关例题

原创 2013年12月05日 19:26:11

方法1.在A1中从头到尾复制数字,复制后数字保存在A1中。

#include<iostream>
using namespace std;
void  merge(int a[],int &a_length,int b[],int b_length){
    int i,j,k,m;
    i=0;
    j=0;m=a_length-1;
    while(j<=b_length-1&&i<=m){
        if(a[i]<=b[j])
            i++;
        else{
            
            for(k=m;k>=i;k--){
                a[k+1]=a[k];
            }
                a[i]=b[j];
                i++;
                j++;
                m++;
            }
    }

    if(j<b_length)
        while(j<=b_length-1)
            a[i++]=b[j++];
    a_length+=b_length;
}
int main(){
    int a[20],b[8];
    int a_length;
    int b_length;
    a[0]=2;
    a[1]=3;
    a[2]=4;
    a[3]=7;
    a[4]=7;
    a_length=5;
    b[0]=10;
    b[1]=22;
    b[2]=92;
b_length=3;

    merge(a,a_length,b,b_length);
    for(int i=0;i<a_length;i++)
        cout<<a[i]<<endl;

    return 0;
}


方法2:从尾到头复制数字

#include<iostream>
using namespace std;
void  merge(int a[],int &a_length,int b[],int b_length){
    int i,j,k,m;
    i=0;
    j=0;m=a_length-1;
    while(j<=b_length-1&&i<=m){
        if(a[i]<=b[j])
            i++;
        else{
            
            for(k=m;k>=i;k--){
                a[k+1]=a[k];
            }
                a[i]=b[j];
                i++;
                j++;
                m++;
            }
    }

    if(j<b_length)
        while(j<=b_length-1)
            a[i++]=b[j++];
    a_length+=b_length;
}
int main(){
    int a[20],b[8];
    int a_length;
    int b_length;
    a[0]=2;
    a[1]=3;
    a[2]=4;
    a[3]=7;
    a[4]=7;
    a_length=5;
    b[0]=10;
    b[1]=22;
    b[2]=92;
b_length=3;

    merge(a,a_length,b,b_length);
    for(int i=0;i<a_length;i++)
        cout<<a[i]<<endl;

    return 0;
}












































相关文章推荐

剑指offer面试题48 C++写一个不能被继承的类

/* 在C#和java中分别有关键字sealed 和 fina表示一个类不能被继承 但是C++ 没有 可以这么想 一个派生类 必须调用父类的构造函数和析够函数 如果父类把构造函数和析够函数定义成pri...

剑指offer--数据结构之二叉树(1、4、6、11、12、27、48、50、60)

offer1 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。 二元查找树的中序遍历就是已经排序的序列,改成双向链表,可考虑,先把左子树改造成双...

《剑指offer》:[48]不能被继承的类-单例模式

题目:不能被继承的类    不能继承,一般我们会对构造函数做手脚。不能继承,继承会发生什么,继承的类在创建对象的时候,会自动调用父类的构造函数,如果我们在这里限制让子类不能调用父类的构造和析构就是实现...
  • gogoky
  • gogoky
  • 2016年06月25日 11:52
  • 2246

剑指offer48--判断字符串的数值形式

实现一个函数来判断字符串是否是数值的形式(包括小数、整数和指数等)

剑指offer(48):扑克牌的顺子

题目描述从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2~10为数字本身,A为1,J为11,Q为12,K为13,而大王小王可以看成任意数字。...

【剑指offer】链表相关-链表末尾插入一个节点

#include #include #include //向链表的末尾添加一个节点 struct ListNode { int m_nValue; ListNode * m_pNext; }...

剑指Offer----面试题四之相关题目

题目: 有两个排序的数组A1和A2,内存在A1的末尾有足够多的空余空间容纳A2。请实现一个函数,把A2中所有的数字插入到A1中并且所有的数字是排序的。 思路一: 不管三七二十一,先插入,再排序。 思路...

剑指offer——空格替换问题和相关问题

void Test1() { //请实现一个函数,把字符串中的每个空格替换成%20 //例如输入“we are happy”,输出“we%20are%20happy” char arr[20] ...

剑指offer——斐波那契数列相关问题总结

题目描述 题目一: 写一个函数,输入n,求斐波那契数列的第n项。斐波那契数列定义如下:...

剑指offer面试题java实现之题4之相关题目:两个排序数组合并

两个已经排序的数组A和B,从数组A和B的尾部遍历比较元素,大的放在新数组的后面。最后如果B中还有元素,将其加入新数组中。 /** * @function 合并两个有序数组arr1[] arr2[]...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:剑指offer48相关例题
举报原因:
原因补充:

(最多只允许输入30个字)