diff --git a/Algorithms/88.Merge Sorted Array/Merge Sorted Array.go b/Algorithms/88.Merge Sorted Array/Merge Sorted Array.go new file mode 100644 index 00000000..a6f22428 --- /dev/null +++ b/Algorithms/88.Merge Sorted Array/Merge Sorted Array.go @@ -0,0 +1,29 @@ +package problem88 + +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-- + } +} diff --git a/Algorithms/88.Merge Sorted Array/Merge Sorted Array_test.go b/Algorithms/88.Merge Sorted Array/Merge Sorted Array_test.go new file mode 100644 index 00000000..52ac64f4 --- /dev/null +++ b/Algorithms/88.Merge Sorted Array/Merge Sorted Array_test.go @@ -0,0 +1,59 @@ +package problem412 + +import ( + "fmt" + "testing" +) + +type question struct { + para + ans +} + +// para 是参数 +// one 代表第一个参数 +type para struct { + one []int + m int + two []int + n int +} + +// ans 是答案 +// one 代表第一个答案 +type ans struct { + one []int +} + +func Test_Problem0088(t *testing.T) { + + qs := []question{ + + // question{ + // para{[]int{0}, 0, []int{1}, 1}, + // ans{[]int{1}}, + // }, + // + // question{ + // para{[]int{1, 3, 5, 7}, 4, []int{2, 4}, 2}, + // ans{[]int{1, 2, 3, 4}}, + // }, + // + // question{ + // para{[]int{1, 3, 5, 7}, 4, []int{2, 2}, 2}, + // ans{[]int{1, 2, 2, 3}}, + // }, + + question{ + para{[]int{1, 2, 3, 0, 0, 0}, 3, []int{2, 5, 6}, 3}, + ans{[]int{1, 2, 2, 3}}, + }, + } + + for _, q := range qs { + _, p := q.ans, q.para + + merge(p.one, p.m, p.two, p.n) + fmt.Printf("~~%v~~\n", p) + } +} diff --git a/Algorithms/88.Merge Sorted Array/README.md b/Algorithms/88.Merge Sorted Array/README.md new file mode 100644 index 00000000..a36f5b6f --- /dev/null +++ b/Algorithms/88.Merge Sorted Array/README.md @@ -0,0 +1,8 @@ +# [88. Merge Sorted Array](https://leetcode.com/problems/merge-sorted-array/description/) + +## 题目 + +Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. + +Note: +You may assume that nums1 has enough space (size that is greater or equal to m + n) to hold additional elements from nums2. The number of elements initialized in nums1 and nums2 are m and n respectively. \ No newline at end of file