text: // 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.
  //  
  
  // Constraints:
  
  // nums1.length == m + n
  // nums2.length == n
  // 0 <= m, n <= 200
  // 1 <= m + n <= 200
  // -109 <= nums1[i], nums2[j] <= 109
  //  
  
  // 来源：力扣（LeetCode）
  // 链接：https://leetcode-cn.com/problems/merge-sorted-array
  // 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
  
  // 🎨 方法一：双指针
  
  // 📝 思路：双指针分别逆序遍历两个数组，将较大值 unshift 到长数组末尾（赋值替换）
  
  /**
   * @param {number[]} nums1
   * @param {number} m
   * @param {number[]} nums2
   * @param {number} n
   * @return {void} Do not return anything, modify nums1 in-place instead.
   */
  var merge = function (nums1, m, nums2, n) {
  
      let p1 = m - 1;
      let p2 = n - 1;
      let p3 = m + n - 1;
  
      while (p1 >= 0 && p2 >= 0) {
          if (nums1[p1] > nums2[p2]) {
              nums1[p3] = nums1[p1];
              p1--;
              p3--;
          } else {
              nums1[p3] = nums2[p2];
              p2--;
              p3--;
          }
      }
  
      if (p2 >= 0) {
          for (let i = 0; i <= p2; i++) {
              nums1[i] = nums2[i]
          }
      }
  
      return nums1
  };