哪个网站做推销产品,广州一建筑外墙脚手架坍塌,2018做分享网站,潜江网站开发给你两个长度为 n 、下标从 0 开始的整数数组 nums1 和 nums2 #xff0c;另给你一个下标从 1 开始的二维数组 queries #xff0c;其中 queries[i] [xi, yi] 。
对于第 i 个查询#xff0c;在所有满足 nums1[j] xi 且 nums2[j] yi 的下标 j (0 j n) …给你两个长度为 n 、下标从 0 开始的整数数组 nums1 和 nums2 另给你一个下标从 1 开始的二维数组 queries 其中 queries[i] [xi, yi] 。
对于第 i 个查询在所有满足 nums1[j] xi 且 nums2[j] yi 的下标 j (0 j n) 中找出 nums1[j] nums2[j] 的 最大值 如果不存在满足条件的 j 则返回 -1 。
返回数组 answer 其中 answer[i] 是第 i 个查询的答案。 示例 1
输入nums1 [4,3,1,2], nums2 [2,4,9,5], queries [[4,1],[1,3],[2,5]]
输出[6,10,7]
解释
对于第 1 个查询xi 4 且 yi 1 可以选择下标 j 0 此时 nums1[j] 4 且 nums2[j] 1 。nums1[j] nums2[j] 等于 6 可以证明 6 是可以获得的最大值。
对于第 2 个查询xi 1 且 yi 3 可以选择下标 j 2 此时 nums1[j] 1 且 nums2[j] 3 。nums1[j] nums2[j] 等于 10 可以证明 10 是可以获得的最大值。
对于第 3 个查询xi 2 且 yi 5 可以选择下标 j 3 此时 nums1[j] 2 且 nums2[j] 5 。nums1[j] nums2[j] 等于 7 可以证明 7 是可以获得的最大值。
因此我们返回 [6,10,7] 。示例 2
输入nums1 [3,2,5], nums2 [2,3,4], queries [[4,4],[3,2],[1,1]]
输出[9,9,9]
解释对于这个示例我们可以选择下标 j 2 该下标可以满足每个查询的限制。示例 3
输入nums1 [2,1], nums2 [2,3], queries [[3,3]]
输出[-1]
解释示例中的查询 xi 3 且 yi 3 。对于每个下标 j 都只满足 nums1[j] xi 或者 nums2[j] yi 。因此不存在答案。
思路一模拟题意
c解法
class Solution {
public:vectorint maximumSumQueries(vectorint nums1, vectorint nums2, vectorvectorint queries) {int n nums1.size();vectorpairint, int v;for(int i 0; i nums1.size(); i) {v.emplace_back(nums1[i] nums2[i], i);}mappairint, int, int map;sort(v.begin(), v.end(), [](pairint, int p1, pairint, int p2){return p1.first p2.first;});int m queries.size();vectorint ans(m, -1);for(int i 0; i m; i) {int q1 queries[i][0], q2 queries[i][1];if(map.count({q1, q2})) ans[i] map[{q1, q2}];else {for(int j 0; j n; j) {if(nums1[v[j].second] q1 nums2[v[j].second] q2) {ans[i] v[j].first;map[{q1, q2}] v[j].first;break;}}}}return ans;}
};
分析
先利用哈希表将重复数据剔除再进行查找符合要求的最大数注意要将数字放入数组中返回。
总结
本题考察哈希表的运用利用哈希表去重可使时间不超出限制