🚩传送门:牛客题目
题目
给出一个整数数组和有序的整数数组
,请将数组
合并到数组
中,变成一个有序的升序数组
注意:
可以假设
数组有足够的空间存放
数组的元素
和
中初始的元素数目分别为
和
,
的数组空间大小为
不要返回合并的数组,返回是空的,将数组
的数据合并到
里面就好了
数组在
_[0,m-1]_的范围也是有序的
示例1
输入: A: [4,5,6,0,0,0],m=3 B: [1,2,3],n=3 返回值:A: [1,2,3,4,5,6]
解题思路:拷贝 + 排序
我的代码
import java.util.Arrays;public class Solution {public void merge(int A[], int m, int B[], int n) {//1.拷贝System.arraycopy(B, 0, A, m, n);//2.排序Arrays.sort(A);}}
解题思路:二路归并
此二路归并,从右向左比,比较大的数值并过去。
我的代码
public class Solution {public void merge(int A[], int m, int B[], int n) {int i=m-1;//Aint j=n-1;//Bint t=m+n-1;//1.二者均非空选择较大值填入A[t]while(i>=0&&j>=0){if(A[i]>B[j]){A[t--]=A[i--];}else{A[t--]=B[j--];}}//2.B数组空了,将A剩余填入即可while(i>=0){A[t--]=A[i--];}//3.A数组空了,将B剩余填入即可while(j>=0){A[t--]=B[j--];}}}

