📑 题目:88. 合并两个有序数组

🚀 本题 LeetCode 传送门

题目大意

合并两个已经有序的数组,结果放在第一个数组中,第一个数组假设空间足够大。要求算法时间复杂度足够低。

解题思路

为了不大量移动元素,就要从2个数组长度之和的最后一个位置开始,依次选取两个数组中大的数,从第一个数组的尾巴开始往头放,只要循环一次以后,就生成了合并以后的数组了。

代码

  1. package leetcode
  2. func merge(nums1 []int, m int, nums2 []int, n int) {
  3. for p := m + n; m > 0 && n > 0; p-- {
  4. if nums1[m-1] <= nums2[n-1] {
  5. nums1[p-1] = nums2[n-1]
  6. n--
  7. } else {
  8. nums1[p-1] = nums1[m-1]
  9. m--
  10. }
  11. }
  12. for ; n > 0; n-- {
  13. nums1[n-1] = nums2[n-1]
  14. }
  15. }

** 参与讨论