当前位置: 首页 > Web前端 > HTML

日常算法题-合并两个有序数组(JS实现)

时间:2023-03-28 17:27:22 HTML

题目:给你两个非降序排列的整数数组nums1和nums2,两个整数m和n,分别表示nums1和nums中元素的个数nums2.请将nums2合并到nums1中,使合并后的数组也按非递减顺序排列。注意:合并后的数组最终不应该被函数返回,而是存储在数组nums1中。为了解决这个问题,nums1的初始长度为m+n,其中前m个元素表示应该合并的元素,最后n个元素为0,应该被忽略。nums2的长度为n。示例1:输入:nums1=[1,2,3,0,0,0],m=3,nums2=[2,5,6],n=3输出:[1,2,2,3,5,6]解释:[1,2,3]和[2,5,6]需要合并。组合结果为[1,2,2,3,5,6],其中nums1中的元素以斜体和粗体标记。示例2:输入:nums1=[1],m=1,nums2=[],n=0输出:[1]解释:需要合并[1]和[]。合并结果为[1]。示例3:输入:nums1=[0],m=0,nums2=[1],n=1输出:[1]解释:要合并的数组是[]和[1]。合并结果为[1]。请注意,nums1中没有元素,因为m=0。nums1中唯一的0只是为了保证合并后的结果能够顺利存储到nums1中。解法1暴力解法思路:把nums2的数组元素全部放到nums1中,然后用sort方法排序代码:varmerge=function(nums1,m,nums2,n){//遍历nums2for(vari=0;i=0;index--){//如果数组nums1的值已经取完,则完全取num2的值if(num1Index<0){nums1[index]=nums2[num2Index--]}elseif(num2Index<0){//如果数组nums2的值已经取完,取num1的值完全break;}elseif(nums1[num1Index]>nums2[num2Index]){//第一个数组的值大于等于第二个数组,取第一个数组的值nums1[index]=nums1[num1Index--]}else{//否。两个数组的值都大于等于第一个数组,取第二个数组的值nums1[index]=nums2[num2Index--]}}};console.log(merge([1,2,3,0,0,0],3,[2,5,6],3))题源:LeetCodehttps://leetcode.cn/problems/...出处解释:bilibilihttps://www.bilibili.com/video...