给定两个有序整数数组 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]
/*
* @lc app=leetcode.cn id=88 lang=java
*
* [88] 合并两个有序数组
*/
// @lc code=start
class Solution {
public void merge(int[] nums1, int m, int[] nums2, int n) {
int[] s = new int[m + n];//定义一个新的数组,长度为两个原数组长度之和
int i = 0, j = 0, count = 0;
while (i < m && j < n) {
if (nums1[i] < nums2[j]) {
s[count++] = nums1[i++];
} else {
s[count++] = nums2[j++];
}
}
if (i >= m) {//当第一个数组遍历完成,直接将第二个数组元素放入新数组
while (j < n) {
s[count++] = nums2[j++];
}
}
if (j <= n) {//当第一个数组遍历完成,直接将第二个数组元素放入新数组
while (i < m) {
s[count++] = nums1[i++];
}
}
for (int k=0;k
while(n>0) A[m+n-1] = (m==0||B[n-1] > A[m-1]) ? B[--n] : A[--m];