leetcode-01-88.合并两个有序数组

  1. 1. 解法一、
    1. 1.1. 补充:arraycopy方法的使用

给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。

请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。

注意:最终,合并后数组不应由函数返回,而是存储在数组 nums1 中。为了应对这种情况,nums1 的初始长度为 m + n,其中前 m 个元素表示应合并的元素,后 n 个元素为 0 ,应忽略。nums2 的长度为 n 。

解法一、

1
2
3
4
5
6
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
System.arraycopy(nums2,0,nums1,m, n);
Arrays.sort(nums1);
}
}

补充:arraycopy方法的使用

System.arraycopy(nums2,0,nums1,m, n);

参数

  • src – 这是源数组.
  • srcPos – 这是源数组中的起始位置。
  • dest – 这是目标数组。
  • destPos – 这是目标数据中的起始位置。
  • length – 这是一个要复制的数组元素的数目。

​ java自带的函数,将数组num2的第一个元素(索引为0)开始,合并到目标数组num1的第m个位置,一共合并n个元素。

​ 合并完第二步,就是使用Arrays工具类调用sort方法进行排序。

时间复杂度为对数级的。