diff --git a/leetcode/0088.Merge-Sorted-Array/88. Merge Sorted Array.go b/leetcode/0088.Merge-Sorted-Array/88. Merge Sorted Array.go index ec275970..6b30f8e7 100644 --- a/leetcode/0088.Merge-Sorted-Array/88. Merge Sorted Array.go +++ b/leetcode/0088.Merge-Sorted-Array/88. Merge Sorted Array.go @@ -1,29 +1,16 @@ 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-- + for p := m + n; m > 0 && n > 0; p-- { + if nums1[m-1] <= nums2[n-1] { + nums1[p-1] = nums2[n-1] + n-- } else { - nums1[k] = nums2[j] - j-- + nums1[p-1] = nums1[m-1] + m-- } } - for ; j >= 0; k-- { - nums1[k] = nums2[j] - j-- + for ; n > 0; n-- { + nums1[n-1] = nums2[n-1] } }