Advertisement
exmkg

Untitled

Dec 16th, 2024
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.94 KB | None | 0 0
  1. class Solution {
  2.     public void merge(int[] nums1, int m, int[] nums2, int n) {
  3.         int tail1 = m - 1; // pointer at the largest value in nums1
  4.         int tail2 = n - 1; // pointer at the largest value in nums2
  5.         int insertPosition = m + n - 1; // the very end of nums1, where we will start
  6.                                         // putting the merging arrays nums1 and nums2.
  7.  
  8.         // Keep merging until we run out of elements in nums2.
  9.         while (tail2 >= 0) {
  10.             if (tail1 >= 0 && nums1[tail1] > nums2[tail2]) {
  11.                 // If nums1 has the next element, and if it is
  12.                 // greater than the next element in nums2, then
  13.                 // put the next element from nums1 in the insertPosition
  14.                 // and decrement both insertPosition and tail1.
  15.                 nums1[insertPosition--] = nums1[tail1--];
  16.             } else {
  17.                 // Otherwise, put the next element from nums2
  18.                 // in the insertPosition and decrement both
  19.                 // insertPosition and tail2.
  20.                 nums1[insertPosition--] = nums2[tail2--];
  21.             }
  22.         }
  23.  
  24.         /*
  25.                                              0  1  2  3  4   5
  26.                                     nums1 = [1, 2, 3, 0, 0, *6*]
  27.                      tail1 = 2                     ^
  28.             insertPosition = 5                               ^
  29.                                              0  1  2
  30.                                     nums2 = [2, 5, 6]
  31.             tail2 = 2                              ^
  32.            
  33.             The next element of nums2 is bigger, so put it
  34.             at insertPosition = 5 and decrement both
  35.             insertPosition and tail2.
  36.  
  37.                                              0  1  2  3   4   5
  38.                                     nums1 = [1, 2, 3, 0, *5*, 6]
  39.                      tail1 = 2                     ^
  40.             insertPosition = 4                            ^
  41.                                              0  1  2
  42.                                     nums2 = [2, 5, 6]
  43.             tail2 = 1                           ^
  44.            
  45.             The next element of nums2 is bigger, so put it
  46.             at insertPosition = 4 and decrement both
  47.             insertPosition and tail2.
  48.  
  49.                                              0  1  2   3   4  5
  50.                                     nums1 = [1, 2, 3, *3*, 5, 6]
  51.                      tail1 = 2                     ^
  52.             insertPosition = 3                         ^
  53.                                              0  1  2
  54.                                     nums2 = [2, 5, 6]
  55.             tail2 = 0                        ^
  56.            
  57.             The next element of nums1 is bigger, so put it
  58.             at insertPosition = 3 and decrement both
  59.             insertPosition and tail1.
  60.  
  61.                                              0  1   2   3  4  5
  62.                                     nums1 = [1, 2, *2*, 3, 5, 6]
  63.                      tail1 = 1                  ^
  64.             insertPosition = 2                      ^
  65.                                              0  1  2
  66.                                     nums2 = [2, 5, 6]
  67.             tail2 = 0                        ^
  68.            
  69.             The next element of nums1 isn't bigger (both equal), so put the next element of nums2
  70.             at insertPosition = 2 and decrement both
  71.             insertPosition and tail2.
  72.  
  73.                                              0  1  2   3  4  5
  74.                                     nums1 = [1, 2, 2, 3, 5, 6]
  75.                      tail1 = 1                  ^
  76.             insertPosition = 1                  ^
  77.                                              0  1  2
  78.                                     nums2 = [2, 5, 6]
  79.             tail2 = -1                    ^
  80.  
  81.             There are no elements in tail2 left (tail2 < 0) – stop the procedure,
  82.             the two arrays are merged.
  83.         */
  84.     }
  85. }
  86.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement