输入: A = [1, 2, 3, 4] B = [2, 4, 5, 6] 输出: [1, 2, 2, 3, 4, 4, 5, 6]
a = [1, 2, 3, 4]
b = [2, 3, 4, 5]
c = a + b
c.sort()
print(c)
可以尝试抽象一下。
参考代码:
class Solution:
def mergeSortedArray(self, A, B):
i, j = 0, 0
C = []
while i < len(A) and j < len(B):
if A[i] < B[j]:
C.append(A[i])
i += 1
else:
C.append(B[j])
j += 1
while i < len(A):
C.append(A[i])
i += 1
while j < len(B):
C.append(B[j])
j += 1
return C
go 语言实现
package main
import "fmt"
func sortArry(a, b []int) []int {
var (
aLen = len(a)
bLen = len(b)
cLen = aLen + bLen
arrC = make([]int, cLen)
aIndex = 0
bIndex = 0
cIndex = 0
)
for aIndex < aLen && bIndex < bLen {
// 循环对比数组的大小
if a[aIndex] < b[bIndex] {
arrC[cIndex] = a[aIndex]
cIndex++
aIndex++
} else {
arrC[cIndex] = b[bIndex]
cIndex++
bIndex++
}
}
// 取出数组中剩余的值
for aIndex < aLen {
arrC[cIndex] = a[aIndex]
cIndex++
aIndex++
}
for bIndex < bLen {
arrC[cIndex] = b[bIndex]
cIndex++
bIndex++
}
return arrC
}
func main() {
/*
问题描述: 合并两个升序的整数数组,形成一个新数组,并保持有序。
问题实例: 输入: A = [1] B = [1] 输出: [1, 1]
输入: A = [1, 2, 3, 4] B = [2, 4, 5, 6] 输出: [1, 2, 2, 3, 4, 4, 5, 6]
*/
var (
a = []int {1, 2, 3, 4}
b = []int {2, 4, 5, 6}
)
fmt.Println(sortArry(a, b))
}
package main
import (
"fmt"
"sort"
)
/*
问题描述: 合并两个升序的整数数组,形成一个新数组,并保持有序。
问题实例: 输入: A = [1] B = [1] 输出: [1, 1]
输入: A = [1, 2, 3, 4] B = [2, 4, 5, 6] 输出: [1, 2, 2, 3, 4, 4, 5, 6]
*/
func sortSli(sli1, sli2 []int) []int {
newSli := []int{}
if len(sli1) == 0 && len(sli2) == 0 {
fmt.Println("sli1 and sli2 is nil")
return []int{}
} else {
newSli = append(newSli, sli1...)
newSli = append(newSli, sli2...)
}
// sort.Sort(sort.IntSlice(newSli))
sort.Ints(newSli)
return newSli
}
func main() {
sli1 := []int{1, 2, 3, 4}
sli2 := []int{2, 4, 5, 6}
newSli := sortSli(sli1, sli2)
fmt.Println(newSli)
}