【Leetcode 每日一题 - 补卡】2070. 每一个查询的最大美丽值

问题背景

给你一个二维整数数组 i t e m s items items,其中 i t e m s i = p r i c e i , b e a u t y i itemsi = price_i, beauty_i itemsi=pricei,beautyi 分别表示每一个物品的 价格美丽值

同时给你一个下标从 0 0 0 开始的整数数组 q u e r i e s queries queries。对于每个查询 q u e r i e s j queriesj queriesj,你想求出价格小于等于 q u e r i e s j queriesj queriesj 的物品中,最大的美丽值 是多少。如果不存在符合条件的物品,那么查询的结果为 0 0 0。

请你返回一个长度与 q u e r i e s queries queries 相同的数组 a n s w e r answer answer,其中 a n s w e r j answerj answerj 是第 j j j 个查询的答案。

数据约束

  • 1 ≤ i t e m s . l e n g t h , q u e r i e s . l e n g t h ≤ 1 0 5 1 \le items.length, queries.length \le 10 ^ 5 1≤items.length,queries.length≤105
  • i t e m s i . l e n g t h = 2 itemsi.length = 2 itemsi.length=2
  • 1 ≤ p r i c e i , b e a u t y i , q u e r i e s j ≤ 1 0 9 1 \le price_i, beauty_i, queriesj \le 10 ^ 9 1≤pricei,beautyi,queriesj≤109

解题过程

将 i t e m s items items 数组根据 p r i c e price price 从小到大排序,然后将每个位置上的美丽值更新为前缀最大值,这时要求的答案就是最后一个满足 p r i c e i ≤ q u e r y price_i \le query pricei≤query 的前缀最大值,可以用二分。

解题过程

java 复制代码
class Solution {
    public int[] maximumBeauty(int[][] items, int[] queries) {
        Arrays.sort(items, (o1, o2) -> o1[0] - o2[0]);
        for (int i = 1; i < items.length; i++) {
            items[i][1] = Math.max(items[i][1], items[i - 1][1]);
        }
        for (int i = 0; i < queries.length; i++) {
            int j = binarySearch(items, queries[i] + 1);
            queries[i] = j > 0 ? items[j - 1][1] : 0;
        }
        return queries;
    }

    private int binarySearch(int[][] items, int target) {
        int left = 0;
        int right = items.length;
        while (left < right) {
            int mid = left + ((right - left) >>> 1);
            if (items[mid][0] < target) {
                left = mid + 1;
            } else {
                right = mid;
            }
        }
        return left;
    }
}
相关推荐
小蒋学算法5 分钟前
算法-灌溉花园的最少龙头数目-贪心
算法
满怀冰雪5 分钟前
第07篇-差分算法-高效处理区间修改问题
数据结构·算法
KaMeidebaby7 分钟前
卡梅德生物技术快报|重组蛋白的表达和纯化:工艺调试全记录:大肠杆菌体系重组蛋白的表达和纯化参数标定(肠激酶轻链案例)
前端·人工智能·算法·数据挖掘·数据分析
ZPC821023 分钟前
如何将机械臂末端定位精度提升至微米如何进行标定
人工智能·算法·机器人
wabs66625 分钟前
关于动态规划【力扣343.整数拆分的递推公式怎么理解?】
算法·leetcode·动态规划
测试狗科研平台26 分钟前
第一性原理CO2还原反应计算流程和软件推荐
科技·算法·云计算
SEO_juper26 分钟前
2026 谷歌 SEO&GEO 常见问题合集:收录、排名、内容、技术全解析
算法·谷歌·常见问题·seo·跨境电商·外贸·geo
叫我:松哥38 分钟前
基于卷积神经网络的静态手势语识别算法,在测试集上的识别准确率达到97.5%
人工智能·python·深度学习·神经网络·算法·cnn
珊瑚里的鱼41 分钟前
【动态规划】买卖股票的最佳时机含手续费
算法·动态规划
2401_885665191 小时前
从零搭建卷积神经网络:基于PyTorch实现MNIST手写数字分类
pytorch·python·神经网络·算法·机器学习·分类·cnn