当前位置: 首页 > 后端技术 > Python

LeetCodeMergeTwoSortedArrays

时间:2023-03-25 19:38:24 Python

MergeTwoSortedArrays题目来源:https://leetcode-cn.com/problems/merge-sorted-array/题目给定两个有序整数数组nums1和nums2,将nums2合并为nums1,使得num1有序数组。解释:将nums1和nums2的元素个数分别初始化为m和n。你可以假设nums1有足够的空间(空间大小大于或等于m+n)来容纳nums2中的元素。示例:输入:nums1=[1,2,3,0,0,0],m=3nums2=[2,5,6],n=3输出:[1,2,2,3,5,6]解题思路采用双指针的方法,从后往前遍历定义p1指针指向num1数的末尾,p2指向num2数的末尾,p指向num1数字的结尾;从后往前遍历比较两个数组之间元素的大小;当p<0,即p1和p2之一小于0时,遍历结束;如果num2数组有余数,因为数组都是有序的,直接把num2数组的余数放到num1数组对应的位置。代码实现类解决方案:defmerge(self,nums1,m:int,nums2,n:int)->None:"""不返回任何东西,就地修改nums1。将两个排序的数组与Ordinal数组合并为一个args:num1:有序数组1m:num1的元素个数num2:有序数组2的元素个数n:num2的元素个数returns:返回合并后的有序数组"""#通过双指针的方法,从后向的方法offronttraversal,#定义指针p1指向num1的末尾#定义指针p2指向num2的末尾#定义指针p指向num1的末尾p1=m-1p2=n-1p=m+n-1#当p小于0,即p1和p2之一小于0时,遍历结束,p1>=0且p2>=0:ifnums1[p1]