|
| 1 | +/* |
| 2 | + * @Author: Chacha |
| 3 | + * @Date: 2022年05月19日 23:27:39 |
| 4 | + * @Last Modified by: Chacha |
| 5 | + * @Last Modified time: 2022年05月19日 23:28:56 |
| 6 | + */ |
| 7 | + |
| 8 | +/** |
| 9 | + * |
| 10 | + * 来源:https://leetcode-cn.com/problems/merge-sorted-array/ |
| 11 | + * |
| 12 | + * 给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。 |
| 13 | + * 初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。 |
| 14 | + * |
| 15 | + * 示例 1: |
| 16 | + * 输入:nums1 = [1,2,3,0,0,0], m = 3, nums2 = [2,5,6], n = 3 |
| 17 | + * 输出:[1,2,2,3,5,6] |
| 18 | + * |
| 19 | + * 示例 2: |
| 20 | + * 输入:nums1 = [1], m = 1, nums2 = [], n = 0 |
| 21 | + * 输出:[1] |
| 22 | + * |
| 23 | + */ |
| 24 | +const nums1 = [1, 2, 3, 0, 0, 0]; |
| 25 | +const m = 3; |
| 26 | +const nums2 = [2, 5, 6]; |
| 27 | +const n = 3; |
| 28 | + |
| 29 | +const merge = (num1, m, num2, n) => { |
| 30 | + let i = m - 1; |
| 31 | + let j = n - 1; |
| 32 | + let k = m + n - 1; |
| 33 | + |
| 34 | + while (i >= 0 && j >= 0) { |
| 35 | + if (num1[i] > num2[j]) { |
| 36 | + num1[k] = num1[i]; |
| 37 | + i--; |
| 38 | + k--; |
| 39 | + } else { |
| 40 | + num1[k] = num2[j]; |
| 41 | + j--; |
| 42 | + k--; |
| 43 | + } |
| 44 | + } |
| 45 | + |
| 46 | + while (j >= 0) { |
| 47 | + num1[j] = num2[j]; |
| 48 | + j--; |
| 49 | + } |
| 50 | + |
| 51 | + return num1; |
| 52 | +}; |
| 53 | + |
| 54 | +console.log(merge(nums1, m, nums2, n)); |
0 commit comments