1499. 满足不等式的最大值
给你一个数组
points和一个整数k。数组中每个元素都表示二维平面上的点的坐标,并按照横坐标 x 的值从小到大排序。也就是说points[i] = [xi, yi],并且在1 <= i < j <= points.length的前提下,xi < xj总成立。请你找出
yi + yj + |xi - xj|的 最大值,其中|xi - xj| <= k且1 <= i < j <= points.length。题目测试数据保证至少存在一对能够满足
|xi - xj| <= k的点。
示例 1:
输入:points = [[1,3],[2,0],[5,10],[6,-10]], k = 1 输出:4 解释:前两个点满足 |xi - xj| <= 1 ,代入方程计算,则得到值 3 + 0 + |1 - 2| = 4 。第三个和第四个点也满足条件,得到值 10 + -10 + |5 - 6| = 1 。 没有其他满足条件的点,所以返回 4 和 1 中最大的那个。示例 2:
输入:points = [[0,0],[3,0],[9,2]], k = 3 输出:3 解释:只有前两个点满足 |xi - xj| <= 3 ,代入方程后得到值 0 + 0 + |0 - 3| = 3 。
提示:
2 <= points.length <= 10^5points[i].length == 2-10^8 <= points[i][0], points[i][1] <= 10^80 <= k <= 2 * 10^8- 对于所有的
1 <= i < j <= points.length,points[i][0] < points[j][0]都成立。也就是说,xi是严格递增的。来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/max-value-of-equation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
成功,堆,后面参考标签单调队列
yi + yj + |xi - xj|,因为xi 主要特点是采取了懒删除策略,保存前面索引的位置与 yi-xi,按 yi-xi从大到小排序堆 1. 把堆顶和x距离太远的删掉(懒删除) 2. 非空情况比较 max(yi+yj+堆顶,ans) 3. 当前元素 {xi,yi-xi} 加入堆 时间复杂度:O(nlogn) 空间复杂度:O(n) 1. 考虑两个情况: - 新的值比旧的值小,新的值可能作为有效值算到答案中吗?可能。前面旧值出队,新的值可能变成最大 - 新的值比旧的值大,旧的值可能作为有效值到答案中吗?不可能。前面旧值出队,新的值还没出队,所以旧值无效了。 2. 综上,本题维护一个单调下降即可。最大值在最前,最小值最后。前面的值距离超出就出队,后面的值比新值小的就出队,然后新的值加在队列的末尾。这样就用O(n) 的复杂度维护了和堆一样拿到最大值得效果。 时间复杂度:O(n) 空间复杂度:O(n) 方法2:双端队列(单调队列)