python两个有序数组合并成一个有序数组,python两个有序列表合并
给定两个有序整数数组nums1和nums2。请将nums2合并到nums1中,使nums1成为有序数组。
描述:
初始化nums1和nums2的元素数量分别是m和n。
可以假设nums1有足够的空间(空间大小大于等于m ^ n)来容纳nums2中的元素。
示例:
资料来源:LeetCode
链接:https://leetcode-cn.com/problems/merge-sorted-array
版权归领网所有。商业转载请联系官方授权,非商业转载请注明出处。
输入:
nums1=[1,2,3,0,0,0],m=3
nums2=[2,5,6],n=3
产出:[1,2,2,3,5,6]
想法:
看了评论和解答,虽然看到的大部分是从后面确定数组,看了真的很好,但是这段代码的想法是我看到题目第一个想到的,我写的。
首先我们需要定义一个独立的数组res来存储元素,或者需要一个双指针算法。
将两个指针分别指向两个数组的开头,开始通过遍历比较两个数组的元素,将小元素放入res,对应的指针1;遍历的时候,我们还要判断两个数组nums1和nums2哪个先被遍历。如果数组没有被遍历,我们可以直接把剩下的元素加到re中。最后,标题需要nums1的输出,所以我们使用for循环将res中的元素添加到nums1中。
这里多定义了一个数组,内存消耗可能会大一点。开始写吧,从后面确定,嘻嘻~ ~ ~ ~。
作者:强鸡翅-康-v
链接:3359 leet code-cn . com/problems/merge-sorted-array/solution/cyu-Yan-shui-Zhen-by-the-strong鸡翅-康-v-ecfw/
资料来源:LeetCode
版权归作者所有。商业转载请联系作者授权,非商业转载请注明出处。
void merge(int* nums1,int nums1Size,int m,int* nums2,int nums2Size,int n){ int I;int start1=0,start 2=0;int * RES=(int *)malloc((m n)* sizeof(int));memset(res,0,(m n)* sizeof(int));for(I=0;inums1SizeI){ if(start 1==m start 2==n){ break;} if(num S1[start 1]=num S2[start 2]){ RES[I]=num S1[start 1];start1} else { RES[I]=nums 2[start 2];start2} } if(start1==mstart2!=n){ for(start 2;start2nstart 2){ RES[I]=nums 2[start 2];} } if(start1!=mstart 2==n){ for(start 1;start1mstart 1){ RES[I]=num S1[start 1];} } for(I=0;inums1SizeI){ nums 1[I]=RES[I];}返回nums1}
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。