题目:88. 合并两个有序数组
描述
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。
public void merge(int[] nums1, int m, int[] nums2, int n) {
// nums2 为空 直接输出num1 即可
if (n == 0) {
return;
}
int capacity = nums1.length;
// 将nums中的0进行更改,方便后面根据大小存储数据
for (int i = m; i < nums1.length; i++) {
nums1[i] = 201;
}
ArrayList<Integer> list = new ArrayList<>(capacity);
int i = 0; //存储 nums1的下标
int j = 0; //存储 nums2的下标
while (capacity-- > 0) {
if (nums1[i] <= nums2[j]) {
list.add(nums1[i]);
i++;
continue;
}
list.add(nums2[j]);
j++;
//当 nums2存储元素指针接近length的时候 ,指针不移动,改变原来数值即可
if (j == nums2.length) {
--j;
nums2[j] = 201;
}
}
for (i = 0; i < list.size(); i++) {
nums1[i] = list.get(i);
}
}
努力奔跑,是为了追上曾经被寄予厚望的自己。