题目
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively.
算法
双指针
O(m+n)
class Solution {
public:
void merge(vector<int>& A, int m, vector<int>& B, int n) {
// MOVE A[0~m-1] to A[n~n+m-1]
for(int i=m-1;i>=0;i--)
A[n+i]=A[i];
//merge
int pa=n,pb=0,cnt=0;
while(pa<n+m && pb<n){
if(A[pa]>B[pb])
A[cnt++]=B[pb++];
else
A[cnt++]=A[pa++];
}
while(pb<n)
A[cnt++]=B[pb++];
}
};