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 (size that is greater or equal to m + n) to hold additional elements from B. The number of elements initialized in A and B are m andn respectively.
C++代码如下:
#include<iostream> using namespace std; class Solution { public: void merge(int A[], int m, int B[], int n) { int i=m-1; int j=n-1; int k=m+n-1; while(i>=0&&j>=0) { if(A[i]>=B[j]) { A[k--]=A[i--]; } else { A[k--]=B[j--]; } } while(i>=0) { A[k--]=A[i--]; } while(j>=0) { A[k--]=B[j--]; } } }; int main() { int A[10]={1,3,5,7,9}; int B[5]={2,4,6,8,10}; Solution s; s.merge(A,5,B,5); for(auto a:A) cout<<a<<" "; cout<<endl; }
运行结果:
#include<iostream> using namespace std; class Solution { public: void merge(int A[], int m, int B[], int n) { if(n==0) return; int i,j; int index=m+n-1; i=m-1; j=n-1; while(i>=0&&j>=0) { if(A[i]>B[j]) { A[index]=A[i]; i--; index--; } else { A[index]=B[j]; j--; index--; } } while(j>=0) { A[index]=B[j]; index--; j--; } return; } }; int main() { int A[10]={1,3,5,7,9}; int B[5]={2,4,6,8,10}; Solution s; s.merge(A,5,B,5); for(auto a:A) cout<<a<<" "; cout<<endl; }