题目链接:LC 88. 合并两个有序数组
2020.10.12第一次解答:
解题思路
直观解法,STL解决问题。
C++ vector支持同类型数据的区间插入,比如:
//函数原型
iterator insert(iterator it,const_iterator first,const_iterator last)
//向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据
vector<int> vec1 = {...};
vector<int> vec2 = {...};
vec2.insert(vec2.end(), vec1.begin(), vec1.end()); //将vec1整个插入vec2末尾
于是有解题代码如下
class Solution {
public:
void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {
vector<int>::iterator iter1 = nums1.begin();
for (int i = 0; i < m; i++) iter1++;
nums1.erase(iter1, end(nums1));
nums1.insert(end(nums1), begin(nums2), end(nums2));
sort(begin(nums1), end(nums1));
}
};