【每日一题Day272】LC1499满足不等式的最大值 | 单调队列 大顶堆

简介: 【每日一题Day272】LC1499满足不等式的最大值 | 单调队列 大顶堆

满足不等式的最大值【LC1499】

给你一个数组 points 和一个整数 k 。数组中每个元素都表示二维平面上的点的坐标,并按照横坐标 x 的值从小到大排序也就是说 points[i] = [xi, yi] ,并且在 1 <= i < j <= points.length 的前提下, xi < xj 总成立。

请你找出 yi + yj + |xi - xj|最大值,其中 |xi - xj| <= k1 <= i < j <= points.length

题目测试数据保证至少存在一对能够满足 |xi - xj| <= k 的点。

新知识++

  • 思路

image.png

class Solution {
    public int findMaxValueOfEquation(int[][] points, int k) {
        int ans = Integer.MIN_VALUE;
        var q = new ArrayDeque<int[]>();
        for (var p : points) {
            int x = p[0], y = p[1];
            while (!q.isEmpty() && q.peekFirst()[0] < x - k) // 队首超出范围
                q.pollFirst(); // 弹它!
            if (!q.isEmpty())
                ans = Math.max(ans, x + y + q.peekFirst()[1]); // 加上最大的 yi-xi
            while (!q.isEmpty() && q.peekLast()[1] <= y - x) // 队尾不如新来的强
                q.pollLast(); // 弹它!
            q.addLast(new int[]{x, y - x});
        }
        return ans;
    }
}
作者:灵茶山艾府
链接:https://leetcode.cn/problems/max-value-of-equation/solutions/2352457/on-dan-diao-dui-lie-fu-ti-dan-pythonjava-hhrr/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

image.png

class Solution {
    public int findMaxValueOfEquation(int[][] points, int k) {
        int ans = -(1 << 30);
        PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> b[0] - a[0]);
        for (var p : points) {
            int x = p[0], y = p[1];
            while (!pq.isEmpty() && x - pq.peek()[1] > k) {
                pq.poll();
            }
            if (!pq.isEmpty()) {
                ans = Math.max(ans, x + y + pq.peek()[0]);
            }
            pq.offer(new int[] {y - x, x});
        }
        return ans;
    }
}
作者:ylb
链接:https://leetcode.cn/problems/max-value-of-equation/solutions/2352475/python3javacgotypescript-yi-ti-shuang-ji-dtrj/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

image.png

目录
相关文章
|
小程序 容器
日程安排小程序实战教程
日程安排小程序实战教程
|
运维 监控 数据库
如何实现软件SaaS化
如何实现软件SaaS化
|
7月前
|
SQL 分布式计算 IDE
如何在IDE中通过Spark操作Hive
通过以上方法和代码示例,你可以在IDE中成功通过Spark操作Hive,实现大规模数据处理和分析。确保理解每一步的实现细节,应用到实际项目中时能有效地处理各种复杂的数据场景。
402 28
|
8月前
|
人工智能 负载均衡 数据可视化
阿里云百炼免费0元部署DeepSeek-R1满血版,替大家试过了,3分钟部署成功!
阿里云百炼平台提供免费100万Token,一键部署DeepSeek-R1满血版仅需3分钟。新手无需编码,最低0元即可体验。平台支持自动弹性扩展,保障API调用稳定性,并提供Chatbox客户端简化操作流程。详情及教程见阿里云百炼官网。
413 4
|
机器学习/深度学习 PyTorch TensorFlow
【TensorFlow】深度学习框架概述&TensorFlow环境配置
【1月更文挑战第26天】【TensorFlow】深度学习框架概述&TensorFlow环境配置
|
Rust 开发者
揭秘Rust编程:模块与包的终极对决,谁将主宰代码组织的新秩序?
【8月更文挑战第31天】在软件工程中,模块化设计能显著提升代码的可读性、可维护性和可重用性。Rust 作为现代系统编程语言,其模块和包管理机制为开发者提供了强有力的工具来组织代码。本文通过对比模块和包的概念及使用场景,探讨了 Rust 中的最佳实践。
193 2
|
人工智能 自动驾驶 物联网
探索未来:2024年的十大技术趋势
【10月更文挑战第3天】探索未来:2024年的十大技术趋势
1573 0
|
网络协议 安全 网络安全
|
负载均衡 网络协议 应用服务中间件
SLB四层转发和七层转发
SLB四层转发和七层转发详细介绍
1298 0
|
druid Java 关系型数据库
使用maven搭建微服务项目
使用maven搭建微服务项目
使用maven搭建微服务项目