LeetCode88.合并两个有序数组
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 num1 成为一个有序数组。
输入:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6], n = 3
输出: [1,2,2,3,5,6]
观察数组nums1发现后面有很多空位0未赋值,解题应该是需要用到的。
可以通过从后往前比较nums1和nums2的最大值添加到nums1的最后面。
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
// 插入的下标
int p=m+n-1;
//nums1的最后一个数下标
int p1=m-1;
//nums2的最后一个数下标
int p2=n-1;
while(p2>=0&&p1>=0){
nums1[p--] = nums1[p1]>nums2[p2]?nums1[p1--]:nums2[p2--];
}
//避免nums2部分值没添加上
System.arraycopy(nums2,0,nums1,0,p2+1);
}
}