题解 | #合并两个有序的数组#
合并两个有序的数组
https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
import java.util.*; public class Solution { public void merge(int A[], int m, int B[], int n) { int i = m-1; int j = n-1; //新数组的指针 int k = m+n-1; //任意一个数组遍历结束 while(i >= 0 && j >= 0){ //这里面很关键,首先注意判断范围,就是>=0,因为j--,是先用到j,再执行-- //因此会用到等于0的时候,再执行-1,不符合 //然后赋值这里,是用到了谁,谁-1,不是都要-1,因此j--操作应该在赋值进行,而不是在比较处进行 //否则,不应该-1的,都-1了 A[k--] = B[j] >= A[i]? B[j--]:A[i--]; } //A数组没有遍历完,直接就在里面,所以只需要把B数组装进去就行 while(j >= 0){ A[k--] = B[j--]; } } }