看板 Marginalman
2070. Most Beautiful Item for Each Query 給一個二為矩陣 items,其中items[i]=[price_i,beauty_i] 再給一個queries矩陣 請回傳一個answer矩陣 其中answer[i]是items矩陣裡price小等於queries[i]的所有組合中最大beauty值 思路: 先將items依照price的大小排序 接著建立一個array array[i]表示從0~i個item裡最大的beauty值 接著對item用二分搜法找query[i] 假設得到的位置是j 再檢查item[j][0]是否大於query[i] 是 : answer[i]=array[j-1] 否 : answer[i]=array[j] golang code: func maximumBeauty(items [][]int, queries []int) []int { n := len(items) slices.SortFunc(items, func(a, b []int) int { if a[0] == b[0] { return b[1] - a[1] } return a[0] - b[0] }) arr, ans := make([]int, n), make([]int, len(queries)) max_num := 0 for i := 0; i < n; i++ { max_num = max(max_num, items[i][1]) arr[i] = max_num } for key, val := range queries { if val < items[0][0] { ans[key] = 0 continue } idx := bs(items, val) if items[idx][0] <= val { ans[key] = arr[idx] } else { ans[key] = arr[idx-1] } } return ans } func bs(item [][]int, target int) int { l, r := 0, len(item)-1 for r > l { m := l + (r-l)/2 if target > item[m][0] { l = m + 1 } else { r = m } } return l } 就可以得到答案了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 42.73.211.250 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1731425282.A.F0D.html