題目連結
題目描述
如題目
合并後的數組在 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];
}
};