題目描述:

給定兩個有序整數陣列 nums1 和 nums2,將 nums2 合併到 nums1 中,使得 num1 成為一個有序陣列。
說明:初始化 nums1 和 nums2 的元素數量分別為 m 和 n。你可以假設 nums1 有足夠的空間(空間大小大於或等於 m + n)來儲存 nums2 中的元素。
示例:
  輸入:
    nums1 = [1,2,3,0,0,0], m = 3
    nums2 = [2,5,6], n = 3
  輸出: [1,2,2,3,5,6]

程式碼如下:

public static void merge(int[] nums1,int m,int[] nums2,int n) {
int index1 = 0;
int index2 = 0;
int index = 0;
//新建陣列,大小為m+n
int[] nums = new int[m+n];
//從首元素開始比較,將較小的放入新陣列中,然後較小數的陣列下標加1
while(index2<n&&index1<m){
if(nums2[index2]<nums1[index1]){
nums[index++] = nums2[index2++];
}else {
nums[index++] = nums1[index1++];
};
}
//檢驗陣列元素是否都放入新陣列中
while(index1<m){
nums[index++] = nums1[index1++];
}
while(index2<n){
nums[index++] = nums2[index2++];
}
//按照題要求將新陣列中的值賦給nums1陣列
for(int i = 0;i<nums.length;i++){
nums1[i] = nums[i];
}
}