力扣1499.满足不等式的最大值

力扣1499.满足不等式的最大值

  • 双端单调队列

    • 将原式变形为 xj + yj + yi - xi
    • 枚举j ,问题变为求i<j的yi - xi的最大值
    • 有限制条件xi ≥ xj−k
    • 单调队列储存二元组(x,y-x)
cpp 复制代码
  class Solution {
  public:
      int findMaxValueOfEquation(vector<vector<int>>& points, int k) {
          int ans = INT_MIN;
          deque<pair<int,int>> q;
          for(auto &p:points)
          {
              int x = p[0],y = p[1];
              //如果队头元素的x不满足条件了
              while(!q.empty() && q.front().first < x - k)
                  q.pop_front();
              //如果还有满足条件的,取队头的最大值
              if(!q.empty())
                  ans = max(ans,x + y + q.front().second);
              //如果队尾元素比当前的小,之前弹掉
              while(!q.empty() && q.back().second <= y - x)
                  q.pop_back();
              q.emplace_back(x,y-x);
          }
          return ans;
      }
  };
相关推荐
-Xie-1 天前
Redis(十六)——底层数据结构(一)
java·数据结构·redis
小园子的小菜1 天前
深入理解Trie树:敏感词过滤的核心原理与实现思路
算法
Tisfy1 天前
LeetCode 2402.会议室 III:优先队列大模拟
算法·leetcode·题解·优先队列·排序·大模拟
byzh_rc1 天前
[算法设计与分析-从入门到入土] 基础算法
数据结构·算法·排序算法
2022.11.7始学前端1 天前
Dify第二节:AI 出题助手并写入飞书云文档
算法·工作流·dify
wuhen_n1 天前
LeetCode -- 349. 两个数组的交集(简单)
前端·javascript·算法·leetcode
Pyeako1 天前
机器学习--集成学习之随机森林&贝叶斯算法
python·算法·随机森林·机器学习·集成学习·贝叶斯算法
大头流矢1 天前
《数据结构·排序·进阶:希尔、堆、快排核心解析》——为何希尔是插入进阶?堆排序时间复杂度的关键?
c语言·数据结构·算法
睡醒了叭1 天前
图像分割-传统算法-聚类算法
opencv·算法·计算机视觉·聚类
这周也會开心1 天前
Java面试题2-集合+数据结构
java·开发语言·数据结构