给定两个排序后的数组 A
和 B
,其中 A
的末端有足够的缓冲空间容纳 B
。 编写一个方法,将 B
合并入 A
并排序。
初始化A
和 B
的元素数量分别为 m
和n
。
示例:
输入:
A = [1,2,3,0,0,0], m = 3
B = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/sorted-merge-lcci
class Solution {
public void merge(int[] A, int m, int[] B, int n) {
for(int i=A.length-1;i>=A.length-m;i--) A[i] = A[i-A.length+m];
int k = 0 , i = 0 , j = 0;
while(i<m && j<n){
if(A[i+A.length-m] < B[j]) A[k++] = A[A.length-m+(i++)];
else A[k++] = B[j++];
}
while(i<m) A[k++] = A[A.length-m+(i++)];
while(j<n) A[k++] = B[j++];
}
}
运行结果
网友评论