新建一个临时数组,从临时数组的头开始进行比较插入
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int k=m+n;
int [] nums3=new int[k];
int i=0,j=0,x=0;
while(i<m&&j<n){
if(nums1[i]<=nums2[j]){
nums3[x]=nums1[i];
x++;
i++;
}
else {
nums3[x]=nums2[j];
x++;
j++;
}
}
if(i<m){
while(i<m){
nums3[x]=nums1[i];
x++;
i++;
}
}
else{
while(j<n){
nums3[x]=nums2[j];
x++;
j++;
}
}
for(int o=0;o<n+m;o++){
nums1[o]=nums3[o];
}
}
}
不新建一个数组,直接使用nums1数组,从nums1数组尾开始进行比较插入
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int k=m+n;
for(int x=k-1,i=m-1,j=n-1;x>=0;x--){
if(i<0)nums1[x]=nums2[j--];
else if(j<0)nums1[x]=nums1[i--];
else if(nums1[i]>nums2[j])nums1[x]=nums1[i--];
else nums1[x]=nums2[j--];
}
}
}
直接使用库函数
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
for(int i=0;i<n;i++){
nums1[i+m]=nums2[i];
}
Arrays.sort(nums1);
}
}