安庆网站建设哪家好,wordpress做导语,普洱专业企业网站建设,seo专员工作累吗文章目录 前言88. 合并两个有序数组链接#xff1a;方法一#xff1a;三指针(后插)1.2 代码#xff1a;1.2 流程图#xff1a;方法二#xff1a;开辟新空间2.1 代码#xff1a;2.2 流程图#xff1a;2.3 注意#xff1a; 总结 前言
“或许你并不熠熠生辉甚至有点木讷但… 文章目录 前言88. 合并两个有序数组链接方法一三指针(后插)1.2 代码1.2 流程图方法二开辟新空间2.1 代码2.2 流程图2.3 注意 总结 前言
“或许你并不熠熠生辉甚至有点木讷但你本身就是星星就是浪漫” 本章的内容是力扣每日随机一题的部分方法的解析 提示以下是本篇文章正文内容下面案例可供参考
88. 合并两个有序数组
给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2另有两个整数 m 和 n 分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中使合并后的数组同样按 非递减顺序 排列。 注意最终合并后数组不应由函数返回而是存储在数组 nums1 中。为了应对这种情况nums1 的初始长度为 m n其中前 m 个元素表示应合并的元素后 n 个元素为 0 应忽略。nums2 的长度为 n 。
链接
88. 合并两个有序数组 link
方法一三指针(后插)
1.2 代码
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{int end1m-1;int end2n-1;int imn-1;while(end10end20){if(nums1[end1]nums2[end2]){nums1[i--]nums1[end1--];}else{nums1[i--]nums2[end2--];}}while(end20){nums1[i--]nums2[end2--];}return nums1;
}1.2 流程图
并没有全部画完只画了一部分
方法二开辟新空间
2.1 代码
void merge(int* nums1, int nums1Size, int m, int* nums2, int nums2Size, int n)
{int p10;int p20;int tmp0;int* end(int*)malloc(sizeof(int)*(nm));while(p1m||p2n){if(p1m){tmpnums2[p2];}else if(p2n){tmpnums1[p1];}else if(nums1[p1]nums2[p2]){tmpnums2[p2];}else{tmpnums1[p1];}end[p1p2-1]tmp;}for(int i0;imn;i){nums1[i]end[i];}return nums1;free(end);endNULL;
}2.2 流程图 2.3 注意
要考虑p1为单元素或者空元素的情况要考虑p2为单元素或者空元素的情况要注意是p1m||p2n两个都不符合才能退出循环有一个符合就需要循环不能写成p1mp2n 总结
Ending,今天的力扣每日一题内容就到此结束啦如果后续想了解更多就请关注我吧一键三连还有许多种方法没有写出希望各位佬补充哦~