您的位置:首页 > 编程语言 > C语言/C++

merge-sorted-array-leetcode-C++

2016-08-29 21:31 363 查看
题目:

Given two sorted integer arrays A and B, merge B into A as one sorted array.

Note:

You may assume that A has enough space to hold additional elements from B. The number of elements initialized in A and B arem and n respectively.

//思路:为了不另外开辟空间,可以从右向左进行归并,类似与剑指offer中的先计算出末尾元素的位置loc,然后

//进行归并排序

贴上AC代码如下:

class Solution {
public:
//思路:为了不另外开辟空间,可以从右向左进行归并,类似与剑指offer中的先计算出末尾元素的位置loc,然后
//进行归并排序
void merge(int a[], int m, int b[], int n) {
if(n==0)
return;
if(m==0)
{
for(int i=0;i<n;i++)
a[i]=b[i];
return;
}
int i=m-1;
int j=n-1;
int loc=m+n-1;
while(i>=0 && j>=0)//保证两个数组都没有归并完成
{
if(a[i]>=b[j])
{
a[loc--]=a[i--];
}
else
{
a[loc--]=b[j--];
}
}
//如果最后是剩下的a中元素,则直接返回,如果是B中的元素则需要将元素全部移动到a中
if(j>=0)//注意j可以等于0,因为这时候b中剩下一个元素
{
for(int k=0;k<=j;k++)
{
a[k]=b[k];
}
}
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: