Leetcode / 88. Merge Sorted Array
Pick a programming language:
Here is the source code for the solution to this problem.
package main
import (
"fmt"
"os"
)
// time O(M + N)
// space O(1)
func merge(nums1 []int, m int, nums2 []int, n int) []int {
for i, j, k := m-1, n-1, m+n-1; j >= 0; k -= 1 {
if i >= 0 && nums1[i] > nums2[j] {
nums1[k] = nums1[i]
i--
} else {
nums1[k] = nums2[j]
j--
}
}
return nums1
}
func assertEqual(a int, b int) {
if a != b {
fmt.Printf("Expected %d, but got %d\n", a, b)
os.Exit(1)
}
}
func test() {
testcase1 := merge([]int{1, 2, 3, 0, 0, 0}, 3, []int{2, 5, 6}, 3)
assertEqual(testcase1[0], 1)
assertEqual(testcase1[1], 2)
assertEqual(testcase1[2], 2)
assertEqual(testcase1[3], 3)
assertEqual(testcase1[4], 5)
assertEqual(testcase1[5], 6)
assertEqual(len(testcase1), 6)
testcase2 := merge([]int{1}, 1, []int{}, 0)
assertEqual(testcase2[0], 1)
assertEqual(len(testcase2), 1)
testcase3 := merge([]int{0}, 0, []int{1}, 1)
assertEqual(testcase3[0], 1)
assertEqual(len(testcase3), 1)
testcase4 := merge([]int{4, 5, 6, 0, 0, 0}, 3, []int{1, 2, 3}, 3)
assertEqual(testcase4[0], 1)
assertEqual(testcase4[1], 2)
assertEqual(testcase4[2], 3)
assertEqual(testcase4[3], 4)
assertEqual(testcase4[4], 5)
assertEqual(testcase4[5], 6)
assertEqual(len(testcase4), 6)
}
func main() {
test()
}
Did you like the lesson? 😆👍
Consider a donation to support our work: