合并两个有序数组

合并两个有序数组

问题

这个题目说的是,给你两个递增排序的数组,你要把第二个数组合并到第一个,并使其仍然保持递增排序。两个数组中的元素个数会显式地给出,并且第一个数组的大小可以容纳下两个数组中所有的元素。

比如说给你的两个数组是:

2, 4, _, _
1, 3

它们都有 2 个元素。并且第一个数组后面有足够的空间来填充第二个数组。把第二个数组合并到第一个数组后,得到的是:

1, 2, 3, 4

代码

public class AlgoCasts {

  // Time: O(m+n), Space: O(1)
  public void mergeTwoSortedArray(int[] nums1, int m, int[] nums2, int n) {
    int i = m - 1, j = n - 1, k = m + n - 1;
    while (i >= 0 && j >= 0) {
      if (nums2[j] > nums1[i])
        nums1[k--] = nums2[j--];
      else
        nums1[k--] = nums1[i--];
    }
    while (j >= 0) nums1[k--] = nums2[j--];
  }

}

  转载请注明: ForwardXu 合并两个有序数组

 上一篇
二叉树中序遍历 二叉树中序遍历
二叉树中序遍历问题 这个题目说的是,给你一个二叉树,你要返回一个数组,表示二叉树中序遍历的结果。 比如说,给你的二叉树是: 1 / \ 2 3 \ 4 / 5 你要返回的中序遍历结
2018-12-12
下一篇 
实现平方根函数 实现平方根函数
实现平方根函数问题 这个题目说的是,你要实现一个函数,来计算非负整数 n 的平方根,平方根只需返回整数部分即可。 比如,使用你实现的函数来计算 9 的平方根是 3: f(9) = 3 由于 8 的平方根是 2 点几,使用你实现的函数只需
2018-12-09
  目录