void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) {
int i = m - 1; // 指向 nums1 有效部分的最后一个元素
int j = n - 1; // 指向 nums2 的最后一个元素
int k = m + n - 1; // 指向合并后数组的最后一个位置
// 从后向前合并,避免移动覆盖
while (i >= 0 && j >= 0) {
if (nums1[i] > nums2[j]) {
nums1[k--] = nums1[i--]; // 将较大元素放到最后
} else {
nums1[k--] = nums2[j--]; // 插入 nums2 的元素
}
}
// 如果 nums2 中还有剩余元素,继续复制
while (j >= 0) {
nums1[k--] = nums2[j--];
}
}
leetcode 88 合并两个有序数组
于 2024-10-29 18:12:24 首次发布