0088. Merge Sorted Array

# 88. Merge Sorted Array#

## 题目 #

Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array.

Note:

• The number of elements initialized in nums1 and nums2 are m and n respectively.
• You may assume that nums1 has enough space (size that is equal to m + n) to hold additional elements from nums2.

Example:

``````Input:
nums1 = [1,2,3,0,0,0], m = 3
nums2 = [2,5,6],       n = 3

Output: [1,2,2,3,5,6]
``````

Constraints:

• -10^9 <= nums1[i], nums2[i] <= 10^9
• nums1.length == m + n
• nums2.length == n

## 代码 #

``````
package leetcode

func merge(nums1 []int, m int, nums2 []int, n int) {
if m == 0 {
copy(nums1, nums2)
return
}
// 这里不需要，因为测试数据考虑到了第一个数组的空间问题
// for index := 0; index < n; index++ {
// 	nums1 = append(nums1, nums2[index])
// }
i := m - 1
j := n - 1
k := m + n - 1
// 从后面往前放，只需要循环一次即可
for ; i >= 0 && j >= 0; k-- {
if nums1[i] > nums2[j] {
nums1[k] = nums1[i]
i--
} else {
nums1[k] = nums2[j]
j--
}
}
for ; j >= 0; k-- {
nums1[k] = nums2[j]
j--
}
}

``````

Sep 6, 2020