LeetCode 88. 双指针
原题链接
简单
作者:
史一帆
,
2021-04-28 19:00:17
,
所有人可见
,
阅读 232
另找数组存答案
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
vector<int> n3(m + n);
int i = 0, j = 0, k = 0;
while (i < m && j < n)
{
if (nums1[i] < nums2[j]) n3[k ++ ] = nums1[i ++ ];
else n3[k ++ ] = nums2[j ++ ];
}
while (i < m) n3[k ++ ] = nums1[i ++ ];
while (j < n) n3[k ++ ] = nums2[j ++ ];
nums1 = n3;
}
};
直接放入1数组
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
int p = m - 1, q = n - 1, cur = m + n - 1;
while (p >= 0 && q >= 0)
{
if (nums1[p] > nums2[q]) nums1[cur -- ] = nums1[p -- ];
else nums1[cur -- ] = nums2[q -- ];
}
while (q >= 0) nums1[cur -- ] = nums2[q -- ];
}
};