题目 88 合并两个有序数组
两个非递减的数组num1和num2
m=nums1.length;
n=nums2.length;
合并num2到num1,使合并后的数组同样按照非递减的顺序排序
注意:合并后的数组不应由函数返回,而是存储在数组nums1中,为了应对这种情况,num1的长度是m+n,其中前m个元素表示应合并的元素后n个元素为0
思路
根据题意元素是非递减,从后往前放置
题解
public void merge(int[] nums1, int m, int[] nums2, int n) {
m--;
n--;
//从尾部开始放置
while (n>=0){
if(m>=0&&nums1[m]>nums2[n]){
nums1[m+n+1]=nums1[m--];
}else{
nums1[m+n+1]=nums2[n--];
}
}
}
时间复杂度 O(n)
空间复杂度O(1)