add problem 88

This commit is contained in:
YDZ
2018-04-15 12:38:13 +08:00
parent 8af333dd85
commit 9c6aa3750e
3 changed files with 96 additions and 0 deletions

View File

@ -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--
}
}

View File

@ -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)
}
}

View File

@ -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.