您的位置:首页 > 汽车 > 新车 > 太原站扩建后的规模_网站站点查询_关键词查询爱站网_seo品牌优化百度资源网站推广关键词排名

太原站扩建后的规模_网站站点查询_关键词查询爱站网_seo品牌优化百度资源网站推广关键词排名

2024/11/17 14:27:13 来源:https://blog.csdn.net/CH3CH2CH4/article/details/142484698  浏览:    关键词:太原站扩建后的规模_网站站点查询_关键词查询爱站网_seo品牌优化百度资源网站推广关键词排名
太原站扩建后的规模_网站站点查询_关键词查询爱站网_seo品牌优化百度资源网站推广关键词排名

每周一道算法题启动

题目

【题目链接】

【解法一】合并后排序

排序后的数组自动省略0的数字,又学到了

class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {//合并两个数组后排序for(int i=0; i<n; i++){nums1[m + i] = nums2[i];}sort(nums1.begin(), nums1.end());}
};

【解法二】双指针

时间复杂度:O(m+n)

class Solution {
public:void merge(vector<int>& nums1, int m, vector<int>& nums2, int n) {//双指针int pointer1=0, pointer2=0;int temporary;vector<int> num3(m+n); //数组存放//防止越界while(pointer1 < m || pointer2 < n){//第一个数组没数放了,第二个数组还有剩的比第一个数组所有数都要大的//特判情况if(pointer1 == m) {temporary = nums2[pointer2++];}else if(pointer2 == n){temporary = nums1[pointer1++];}//这里不能等于,要是0的话会放进去,造成不必要麻烦else if(nums1[pointer1] > nums2[pointer2]){temporary = nums2[pointer2++];}else{temporary = nums1[pointer1++];}num3[pointer1 + pointer2 - 1] = temporary;}//复制数组回去num1nums1 = num3;}
};

执行用时这个不是程序运行时间嗷!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com