🌅

合并两个有序数组

void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
    int k = m+n-1;  // 从num1最后面开始插入最大值

    int i = m-1; int j = n-1;
    while (i>=0 && j >= 0) { // 双指针均未越界
        if (nums1[i] > nums2[j]) {
            nums1[k--] = nums1[i--];
        } else {
            nums1[k--] = nums2[j--];
        }
    }
    // 如果nums2还有数据,则拷贝到num1上;另外一种情况,只有num1有数,则本身已在正确位置上,无需操作。
    while (j>=0) nums1[k--] = nums2[j--];
}
 
你觉得这篇文章怎么样?
YYDS
比心
加油
菜狗
views

Loading Comments...