思路
合并两个排序的整数数组A和B变成一个新的数组
样例
给出A=[1,2,3,4],B=[2,4,5,6],返回 [1,2,2,3,4,4,5,6]
Python
class Solution:
"""
@param A: sorted integer array A
@param B: sorted integer array B
@return: A new sorted integer array
"""
def mergeSortedArray(self, A, B):
# write your code here
# 暴力法
return self.violence(A, B)
def violence(self, A, B):
C = A + B
C.sort()
return C
if __name__ == '__main__':
s = Solution()
print(s.mergeSortedArray([1, 2, 3, 10], [2, 4, 5, 6]))
print(s.mergeSortedArray([1, 2, 3, 4], [2, 4, 5, 6]))
Go
package main
import "fmt"
/**
* @param A: sorted integer array A
* @param B: sorted integer array B
* @return: A new sorted integer array
*/
func mergeSortedArray(A []int, B []int) []int {
// write your code here
aLength, bLength := len(A), len(B)
cLength := aLength + bLength
C := make([]int, cLength)
uniqueIndexA, uniqueIndexB := make([]int, aLength), make([]int, bLength)
aIndex, bIndex := 0, 0
for cIndex := 0; cIndex < cLength; cIndex++ {
if aIndex >= aLength {
aIndex = aLength - 1
}
if bIndex >= bLength {
bIndex = bLength - 1
}
if A[aIndex] <= B[bIndex] && uniqueIndexA[aIndex] != 1 {
C[cIndex] = A[aIndex]
uniqueIndexA[aIndex] = 1
aIndex++
} else if A[aIndex] <= B[bIndex] && uniqueIndexA[aIndex] == 1 {
C[cIndex] = B[bIndex]
uniqueIndexB[bIndex] = 1
bIndex++
} else if A[aIndex] > B[bIndex] && uniqueIndexB[bIndex] != 1 {
C[cIndex] = B[bIndex]
uniqueIndexB[bIndex] = 1
bIndex++
} else {
C[cIndex] = A[aIndex]
uniqueIndexA[aIndex] = 1
aIndex++
}
}
return C
}
func main() {
a, b := []int{1, 2, 3, 4}, []int{2, 4, 5, 6}
fmt.Println(mergeSortedArray(a, b))
fmt.Println(mergeSortedArray(b, a))
}