Leetcode-88-合并两个有序数组
题目链接
题目描述
如题目
合并后的数组在 nums1 中,nums1初始长度为(m+n).
思路
-
双指针,分别指向nums1和nums2的开头
-
小的数记录进新数组ans, 对应的指针++.
-
其中一个指针到头后,把另一个数组剩余的数放新数组后边
(注意:a[i] = b[i++]的运算顺序......)
C++代码
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
vector<int> t(m+n);
int p1=0, p2=0;
while (p1<m || p2<n)
{
if (p1 == m)
t[p1+p2-1] = nums2[p2++];
else if(p2 == n)
t[p1+p2-1] = nums1[p1++];
else if (nums1[p1] < nums2[p2])
t[p1+p2-1] = nums1[p1++];
else
t[p1+p2-1] = nums2[p2++];
}
for (int i = 0; i < n+m; i++)
nums1[i] = t[i];
}
};