【ruby】leetcode 练习 :Merge Sorted Array

Example 1:

Input: nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3
Output: [1,2,2,3,5,6]
Explanation: The arrays we are merging are [1,2,3] and [2,5,6].
The result of the merge is [1,2,2,3,5,6] with the underlined elements coming from nums1.

Example 2:

Input: nums1 = [1], m = 1, nums2 = [], n = 0
Output: [1]
Explanation: The arrays we are merging are [1] and [].
The result of the merge is [1].

Example 3:

Input: nums1 = [0], m = 0, nums2 = [1], n = 1
Output: [1]
Explanation: The arrays we are merging are [] and [1].
The result of the merge is [1].
Note that because m = 0, there are no elements in nums1. The 0 is only there to ensure the merge result can fit in nums1.

Constraints:

nums1.length == m + n
nums2.length == n
0 <= m, n <= 200
1 <= m + n <= 200
-109 <= nums1[i], nums2[j] <= 109

解题:
观察nums1的长度为 m + n ,且 nums1 阵列有预留位置,採由后往前的方式,使用 i 纪录阵列指向的位置,并比较 m 与 n 的大小,依序修改 i 所记录的值。

def merge(nums1, m, nums2, n)  i = m+n-1  while m>0 && n >0    if nums1[m-1] > nums2[n-1]      nums1[i] = nums1[m-1]       m -= 1    else      nums1[i] = nums2[n-1]      n -= 1    end    i -= 1  end  while n > 0    nums1[i] = nums2[n-1]    n -= 1    i -= 1  endend

关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章