面试题14: 两数组第K个值

题目: 两个有序数组A和B,分别拥有m和n的长度,求其合并后的第k个值.


代码实现:

// 二分归并排序
func binaryMerge(arr1, arr2 []int) interface{} {
	i, j, la1, la2, temp := 0, 0, len(arr1), len(arr2), 0
	var ms []int

	for i < la1 && j < la2 {
		if arr1[i] <= arr2[j] {
			temp = arr1[i]
			ms = append(ms, temp)
			i++
		} else {
			temp = arr2[j]
			ms = append(ms, temp)
			j++
		}
	}
	// 把剩下的左边进行合并
	for i < la1 {
		temp = arr1[i]
		ms = append(ms, temp)
		i++
	}
	// 把剩下的右边进行合并
	for j < la2 {
		temp = arr2[j]
		ms = append(ms, temp)
		j++
	}
	return ms
}

猜你喜欢

转载自blog.csdn.net/qq_35191331/article/details/80334537