The idea is to loop the array in a reversed order. If from beginning, it definitely loses some elements, but if loop from end, then this is solved. Think ON DIFFerent ways.
public class Solution {
public void merge(int A[], int m, int B[], int n) {
int newIndex = m + n - 1;
int indexA = m - 1;
int indexB = n - 1;
while(indexA >= 0 && indexB >= 0){
if(A[indexA] > B[indexB]){
A[newIndex] = A[indexA];
indexA--;
}else{
A[newIndex] = B[indexB];
indexB--;
}
newIndex--;
}
while(indexB >= 0){
A[newIndex] = B[indexB];
indexB--;
newIndex--;
}
}
}
没有评论:
发表评论