题目: 两个有序数组A和B,分别拥有m和n的长度,求其合并后的值.
代码实现:
func findKthSortedArrays(A, B []int) float64 { i, j, ia, ib, la, lb := 0, 0, -1, -1,len(A), len(B) k := (la + lb) / 2 flag := false // false表示第k个值在A上,true表示第k个值在B上 for i < la && j < lb && ia + ib + 2 < k { if A[i] <= B[j] { ia = i i++ flag = false } else { ib = j j++ flag = true } } // A中进行探究 for i < la && ia + ib + 2 < k { i++ flag = false } // B中进行探究 for j < lb && ia + ib + 2 < k { j++ flag = true } s := 0 if ia < 0 && ib < 0 { return 0 } else if flag == false && ia >= 0 { s = A[ia] } else if flag == true && ib >= 0 { s = B[ib] } // 奇数情况 if (la + lb) % 2 == 1 { return float64(s) } // 偶数情况 if i < la && j < lb && ia + ib + 2 < k + 1 { if A[i] <= B[j] { s += A[i] } else { s += B[j] } } else if i < la && ia + ib + 2 < k + 1 { // A中进行探究 s += A[i] } else if j < lb && ia + ib + 2 < k + 1 { // B中进行探究 s += B[j] } return float64(s) / 2 }