思路是 nums1 数组是无限大的,将 nums2 中的数字填入 nums1 中,利用非递减序列的特点,从后往前填入数字。 当end 2 < 0,说明已经完成合并。当end 1 < 0 时,说明 nums2 中的数字小,跳出第一个循环,第二个循环就是填入 nums1 中。
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n) { int end1 = m - 1; int end2 = n - 1; int end = m + n -1; while(end2 >= 0 && end1 >= 0) { if(nums2[end2] > nums1[end1]) { nums1[end--] = nums2[end2--]; } else { nums1[end--] = nums1[end1--]; } } while(end2 >= 0) { nums1[end--] = nums2[end2--]; } }
88.合并两个有序数组
于 2022-04-26 19:24:06 首次发布