题目
题目链接
题解
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
if (m == 0 && n == 0) {
return;
}
// 定义三个指针,mp:num1指针,从m-1开始。np:num2指针,从n-1开始。p是合并后的结果数组指针,从m + n - 1开始
int mp = m - 1, np = n - 1, p = m + n - 1;
while (mp >= 0 || np >= 0) {
// 到达边界
if (np < 0) {
// 取数组1
nums1[p--] = nums1[mp--];
continue;
}
if (mp < 0) {
// 取数组2
nums1[p--] = nums2[np--];
continue;
}
// 非边界
if (nums1[mp] > nums2[np]) {
// 取数组1
nums1[p--] = nums1[mp--];
} else {
nums1[p--] = nums2[np--];
}
}
}
}