首頁>技術>

題目

給定兩個大小相等的陣列 A 和 B,A 相對於 B 的優勢可以用滿足 A[i] > B[i] 的索引 i 的數目來描述。

返回 A 的任意排列,使其相對於 B 的優勢最大化。

示例 1:輸入:A = [2,7,11,15], B = [1,10,4,11] 輸出:[2,11,7,15]

示例 2:輸入:A = [12,24,8,32], B = [13,25,32,11] 輸出:[24,32,8,12]

提示: 1 <= A.length = B.length <= 10000

0 <= A[i] <= 10^9

0 <= B[i] <= 10^9

解題思路分析

1、貪心;時間複雜度O(nlog(n)),空間複雜度O(n)

func advantageCount(A []int, B []int) []int {	res := make([]int, len(A))	sort.Ints(A)	arr := make([][2]int, 0)	for i := 0; i < len(B); i++ {		arr = append(arr, [2]int{i, B[i]})	}	sort.Slice(arr, func(i, j int) bool {		return arr[i][1] < arr[j][1]	})	left, right := 0, len(A)-1	for i := 0; i < len(A); i++ {		if A[i] > arr[left][1] { // 滿足條件放前面			index := arr[left][0]			left++			res[index] = A[i]		} else { // 不滿足條件放後面			index := arr[right][0]			right--			res[index] = A[i]		}	}	return res}
總結

Medium題目,本質上是比較經典的田忌賽馬題目,採用貪心策略

10
最新評論
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • [資料結構]棧和佇列