题目描述
Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.
Note:
The number of elements initialized in nums1 and nums2 are m and n respectively.
You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2.
思路
从后往前。
代码
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
if (n == 0) return;
int p1 = m-1;
int p2 = n-1;
int p = n+m-1;
while(p1>=0 && p2>=0) {
if (nums1[p1] > nums2[p2]) {
nums1[p--] = nums1[p1--];
}else nums1[p--] = nums2[p2--];
}
while(p1>=0) nums1[p--] = nums1[p1--];
while(p2>=0) nums1[p--] = nums2[p2--];
return;
}
};
本文介绍了一种算法,用于将两个已排序的整数数组合并成一个有序数组。具体方法是从后向前比较两个数组的元素,将较大的元素放入第一个数组的末尾,重复此过程直至完成合并。

541

被折叠的 条评论
为什么被折叠?



