题解 | #合并两个有序的数组#
合并两个有序的数组
https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665
import java.util.*; public class Solution { public void merge(int A[], int m, int B[], int n) { // 由于A数组后面属于空值,我们排序可以先将MAX值放在末尾,这样就不会影响前面的值 // 基本判断 if(m == 0){ for(int i = 0;i<n;i++){ A[i] = B[i]; } }else if(n == 0){ return; } // 双指针(i是A末尾,j是B末尾,l是A合并后的末尾) int i = m-1,j = n-1,l = m+n-1; while(i != -1 && j != -1){ A[l--] = A[i]>B[j] ? A[i--] : B[j--]; } // 判断哪一侧没结束,没结束就全加入即可 if(i != -1){ return; }else if(j != -1){ while(j != -1){ A[l--] = B[j--]; } } } }