题目 |
这和《程序员面试金典(第六版)》的10.01.合并排序的数组题目是一样的
题目传送门:传送门(点击此处)
题解 |
思路
看题目,正向思考似乎有点困难,可以考虑倒序,就会变得比较简单
倒序进行比较然后进行填充,就能达到想要的效果
每次比较 nums1[p]
和 nums2[q]
的大小,对 nums1[i]
进行赋值
code
class Solution {
public void merge(int[] A, int m, int[] B, int n) {
int p = m - 1;
int q = n - 1;
for (int j = A.length - 1; j >= 0; j--) {
if (p >= 0 && q >= 0) {
if (A[p] <= B[q]) A[j] = B[q--];
else A[j] = A[p--];
} else if (p <= 0 && q >= 0) {
A[j] = B[q--];
} else {
break;
}
}
}
}