题目
合并两个排序数组, 合并后还是有序
Input: [1,2,3,0,0,0], [2,5,6]
Output: [1,2,2,3,5,6]
思路
从后向前找出最大的数填充都最后.
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
while(m >= 0 && n >= 0) {
if (n == 0){
nums1[m+n-1] = nums1[m-1];
m--;
} else if (m == 0) {
nums1[m+n-1] = nums2[n-1];
n--;
}else {
if (nums2[n-1] > nums1[m-1]) {
nums1[m+n-1] = nums2[n-1];
n--;
} else {
nums1[m+n-1] = nums1[m-1];
m--;
}
}
}
}
总结
考虑边界信息, 考虑m,n为0的情况
网友评论