1. 题目
给你两个有序整数数组 nums1 和 nums2,请你将 nums2 合并到 nums1 中,使 nums1 成为一个有序数组。
初始化 nums1 和 nums2 的元素数量分别为 m 和 n 。你可以假设 nums1 的空间大小等于 m + n,这样它就有足够的空间保存来自 nums2 的元素。
2. 思路
方法一:当两个数组非空时,依次比较两个数组的第一个元素,取较小元素,放到第一个数组前面
当有一个数组遍历完毕,将另一个数组中未遍历元素存到第一个数组的后面
方法二:从后向前比较,直接将最大的数存到num1后面。
如果num
3. 方法二
import java.util.Scanner;
public class Main {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
//1. 输入相关数据
int m = sc.nextInt();
int n = sc.nextInt();
int num1[] = new int[m+n];
int num2[] = new int[n];
for(int i=0;i<m;i++) {
num1[i]=sc.nextInt();
}
for(int i=0;i<n;i++) {
num2[i]=sc.nextInt();
}
//2.依次比较(从后向前比较,直接将最大的存到num1最后)
int i=m-1,j=n-1,k=m+n-1;
while(i>=0 && j>=0) {
if(num1[i]>num2[j]) {
num1[k--]=num1[i];
i--;
}else {
num1[k--]=num2[j];
j--;
}
}
// num1遍历完,num2未遍历完时,再将num2插入到num1中
while(j>=0) {
num1[k--]=num2[j--];
}
//3.输出
for(int t=0;t<m+n;t++) {
System.out.print(num1[t]+" ");
}
}
}