Created
August 19, 2023 01:26
-
-
Save primaryobjects/1b800beca8a7b1b57d14d6e8b9170092 to your computer and use it in GitHub Desktop.
Merge two sorted arrays. https://leetcode.com/problems/merge-sorted-array
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const merge = (nums1, m, nums2, n) => { | |
| let index = m + n - 1; // Pointer to the current index being written to. | |
| let i = m - 1; // Pointer to value to compare in nums1. | |
| let j = n - 1; // Pointer to value to compare in nums2. | |
| // Move from right to left, compare values i, j and write larger at index. | |
| // If no more vaues in nums2, just choose nums1. | |
| while (index >= 0) { | |
| nums1[index--] = j < 0 || nums1[i] > nums2[j] ? nums1[i--] : nums2[j--]; | |
| } | |
| return nums1; | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| const merge = (nums1, m, nums2, n) => { | |
| let i = m-1; | |
| let j = n-1; | |
| let index = m+n-1; | |
| while (j >= 0) { | |
| if (i >= 0 && nums1[i] > nums2[j]) { | |
| nums1[index--] = nums1[i--]; | |
| } | |
| else { | |
| nums1[index--] = nums2[j--]; | |
| } | |
| } | |
| return nums1; | |
| }; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| You are given two integer arrays nums1 and nums2, sorted in non-decreasing order, and two integers m and n, representing the number of elements in nums1 and nums2 respectively. | |
| Merge nums1 and nums2 into a single array sorted in non-decreasing order. | |
| The final sorted array should not be returned by the function, but instead be stored inside the array nums1. To accommodate this, nums1 has a length of m + n, where the first m elements denote the elements that should be merged, and the last n elements are set to 0 and should be ignored. nums2 has a length of n. | |
| 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. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment