题目:合并两个有序数组
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--];
}





Loading Comments...