Leetcode1499满足不等式的最大值

问题分析

双端队列按照y-x的值从大到小组织,队列中存储点的编号。

如果y-x的值大于队列尾部元素的y-x值,则从尾部弹出元素。

如果当前点的x值与队列头部元素的x值之差大于k时,则从头部弹出元素。

求解代码

java 复制代码
public static int MAXN = 100001;
	public static int[][] deque = new int[MAXN][2];
	public static int h,t;

	public static int findMaxValueOfEquation(int[][] points,int k){
		h = t = 0;
		int n = points.length;
		int ans = Integer.MIN_VALUE;
		for(int i=0,x,y;i<n;i++){
			x=points[i][0];
			y=points[i][1];

			while (h<t&&deque[h][0]+k<x) {
				h++;
			}

			if(h<t){
				ans = Math.max(ans, x+y+deque[h][1]-deque[h][0]);
			}

			while (h<t&&deque[t-1][1]-deque[t-1][0]<=y-x) {
				t--;
			}

			deque[t][0]=x;
			deque[t++][1]=y;
		}
		return ans;
	}
相关推荐
最贪吃的虎12 小时前
Java基础之泛型
java·运维·jvm·分布式·后端
zmzb010312 小时前
C++课后习题训练记录Day62
开发语言·c++
蕨蕨学AI12 小时前
【Wolfram语言】36 创建云端应用
开发语言·wolfram
不要em0啦13 小时前
从0开始学python:简单的练习题4
开发语言·python
我想吃余13 小时前
【C++篇】C++11:线程库
开发语言·c++
小李云雾13 小时前
Python 多任务编程入门:进程的创建、同步与进程池使用
开发语言·数据库·python·oracle
05大叔13 小时前
MybatisPlus
java·服务器·前端
henreash13 小时前
C#调用F#的MailboxProcessor
开发语言·c#
CSDN_RTKLIB13 小时前
【静态初始化与动态初始化】术语对比
开发语言·c++