88.Merge Sorted Array
1.Description(Easy)
Given two sorted integer arrays A and B, merge B into A as one sorted array.
Notice
You may assume that A has enough space (size that is greater or equal tom+n) to hold additional elements from B. The number of elements initialized in A and B are m and n respectively.
Example
A =[1, 2, 3, empty, empty]
, B =[4, 5]
After merge, A will be filled as[1, 2, 3, 4, 5]
2.Code
Merge two sorted array是正向扫描,这个题目是反向扫描。
因为在A数组里预留了空间
public void mergeSortedArray(int[] A, int m, int[] B, int n) {
int indexA=m-1;
int indexB=n-1;
int index=m+n-1;
while(indexA>=0 && indexB>=0){
if(A[indexA]>B[indexB]){
A[index]=A[indexA];
indexA--;
}else{
A[index]=B[indexB];
indexB--;
}
index--;
}
while(indexA>=0){
A[index--]=A[indexA--];
}
while(indexB>=0){
A[index--]=B[indexB--];
}
}
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int i = m - 1;
int j = n - 1;
int k = m + n - 1;
while (j >= 0) {
if (i >= 0 && nums1[i] > nums2[j]) {
nums1[k--] = nums1[i--];
} else {
nums1[k--] = nums2[j--];
}
}
}
}
Last updated
Was this helpful?