class Solution {
//write down some cases and find out the regular pattern
public:
void merge(int A[], int m, int B[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int i = m-1;
int j = n-1;
int now = m+n-1;
while(i >= 0 && i < m && j >= 0 && j < n)
{
if(A[i] > B[j])
A[now--] = A[i--];
else A[now--] = B[j--];
}
while (j >= 0 && j < n)
A[now--] = B[j--];
}
};
second time
class Solution {
public:
void merge(int A[], int m, int B[], int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
int end = m+n-1;
int i = m-1;
int j = n-1;
while(i >= 0 && j >= 0 && end >= 0)
{
if(A[i] >= B[j]) A[end--] = A[i--];
else A[end--] = B[j--];
}
while(i >= 0) A[end--] = A[i--];
while(j >= 0) A[end--] = B[j--];
}
};
本文介绍了一种高效的数组合并算法,该算法用于将两个已排序的整数数组合并为一个已排序的大数组。通过从两个数组的末尾开始比较并放置较大的元素至结果数组的末尾,实现了O(m+n)的时间复杂度。
326

被折叠的 条评论
为什么被折叠?



