Tags: #1TimePass SourceTag (e.g. leetcode): #leetcode Card Link: [[Array]] --- #### Solution 1 ```go func merge(nums1 []int, m int, nums2 []int, n int) { newArr := make([]int, m) for i, v := range nums1[:m]{ newArr[i] = v } ptr1 := 0 ptr2 := 0 for ptr1 < m && ptr2 < n { if newArr[ptr1] <= nums2[ptr2]{ nums1[ptr1+ptr2] = newArr[ptr1] ptr1 ++ }else{ nums1[ptr1+ptr2] = nums2[ptr2] ptr2++ } } totalPtr := ptr1 + ptr2 if ptr1 != m { for _, v := range newArr[ptr1:m]{ nums1[totalPtr] = v totalPtr ++ } }else { for _, v := range nums2[ptr2:n] { nums1[totalPtr] = v totalPtr ++ } } } ``` #### Description: The better version is comes from backwards, then we could reduce it to zero extra space. Time Complexity: O(n+m) Space Complexity: O(m) #### Solution 2 ```go ``` #### Description: Time Complexity: Space Complexity: