日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

LeetCode 2070. 每一个查询的最大美丽值(离线查询+排序+优先队列)

發布時間:2024/7/5 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LeetCode 2070. 每一个查询的最大美丽值(离线查询+排序+优先队列) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1. 題目
    • 2. 解題

1. 題目

給你一個二維整數數組 items ,其中 items[i] = [pricei, beautyi] 分別表示每一個物品的 價格美麗值

同時給你一個下標從 0 開始的整數數組 queries 。對于每個查詢 queries[j] ,你想求出價格小于等于 queries[j] 的物品中,最大的美麗值 是多少。如果不存在符合條件的物品,那么查詢的結果為 0 。

請你返回一個長度與 queries 相同的數組 answer,其中 answer[j]是第 j 個查詢的答案。

示例 1: 輸入:items = [[1,2],[3,2],[2,4],[5,6],[3,5]], queries = [1,2,3,4,5,6] 輸出:[2,4,5,5,6,6] 解釋: - queries[0]=1[1,2] 是唯一價格 <= 1 的物品。所以這個查詢的答案為 2- queries[1]=2 ,符合條件的物品有 [1,2][2,4] 。它們中的最大美麗值為 4- queries[2]=3 和 queries[3]=4 ,符合條件的物品都為 [1,2][3,2][2,4][3,5] 。它們中的最大美麗值為 5- queries[4]=5 和 queries[5]=6 ,所有物品都符合條件。所以,答案為所有物品中的最大美麗值,為 6 。示例 2: 輸入:items = [[1,2],[1,2],[1,3],[1,4]], queries = [1] 輸出:[4] 解釋: 每個物品的價格均為 1 ,所以我們選擇最大美麗值 4 。 注意,多個物品可能有相同的價格和美麗值。示例 3: 輸入:items = [[10,1000]], queries = [5] 輸出:[0] 解釋: 沒有物品的價格小于等于 5 ,所以沒有物品可以選擇。 因此,查詢的結果為 0 。提示: 1 <= items.length, queries.length <= 10^5 items[i].length == 2 1 <= pricei, beautyi, queries[j] <= 10^9

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/most-beautiful-item-for-each-query
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。

2. 解題

  • 對查詢進行排序,價格小的先查詢,滿足價格要求的,將其美麗值放入優先隊列
  • 對物品排序,價格小的先遍歷
class Solution { public:vector<int> maximumBeauty(vector<vector<int>>& items, vector<int>& queries) {int n = queries.size();vector<int> idx(n);sort(items.begin(), items.end());//按價格從小到大排序iota(idx.begin(), idx.end(), 0); // 填充從 0,開始的自然數sort(idx.begin(), idx.end(), [&](int a, int b){return queries[a] < queries[b];//按查詢價格從小到大排序});vector<int> maxBeauty(n, 0);priority_queue<int> q; // 存儲美麗值int j = 0;for(int i = 0 ; i < n; ++i){while(j < items.size() && items[j][0] <= queries[idx[i]]){ // 價格滿足要求的,將其美麗值加入優先隊列q.push(items[j][1]);j++;}if(!q.empty())maxBeauty[idx[i]] = q.top();}return maxBeauty;} };

336 ms 88.2 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!

總結

以上是生活随笔為你收集整理的LeetCode 2070. 每一个查询的最大美丽值(离线查询+排序+优先队列)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。