力扣2503.矩阵查询可获得的最大分数

力扣2503.矩阵查询可获得的最大分数

  • 离线算法 + 排序 + 小根堆

    • 将query数组从小到大排序,用小根堆存每个单元格的值
    • 从小到大遍历query,如果堆顶元素小于query[i],弹出,直到全部弹出,总弹出个数为答案
cpp 复制代码
  class Solution {
      int dx[4] = {0,1,0,-1},dy[4] = {1,0,-1,0};
  public:
      vector<int> maxPoints(vector<vector<int>>& grid, vector<int>& queries) {
          int k = queries.size(),id[k];
          iota(id,id+k,0);
          sort(id,id+k,[&](int i,int j){return queries[i] < queries[j];});
  
          vector<int> ans(k);
          priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>, greater<>> pq;
          pq.emplace(grid[0][0],0,0);
          grid[0][0] = 0;
          int m = grid.size(),n = grid[0].size(),cnt=0;
          for(int qi:id)
          {
              //堆顶元素更小
              int q = queries[qi]; 	
              //tuple的语法,get<0>(tuple) 返回tuple的第一个元素的引用
              while(!pq.empty() && get<0>(pq.top()) < q)
              {
                  cnt ++;
                  auto[_,tx,ty] = pq.top();
                  pq.pop();
                  for(int i=0;i<4;i++)
                  {
                      int x = tx + dx[i],y = ty + dy[i];
                      if (0 <= x && x < m && 0 <= y && y < n && grid[x][y]) 
                      {
                          pq.emplace(grid[x][y],x,y);
                          grid[x][y] = 0;
                      }
                  }
              }
              ans[qi] = cnt;
          }
          return ans;
      }
  };
相关推荐
ゞ 正在缓冲99%…1 天前
leetcode2826.将三个组排序
算法·leetcode·动态规划
qq_401700411 天前
matlab学习
学习·算法·matlab
budingxiaomoli1 天前
算法--滑动窗口(一)
数据结构·算法
王哈哈^_^1 天前
【数据集】【YOLO】【目标检测】农作物病害数据集 11498 张,病害检测,YOLOv8农作物病虫害识别系统实战训推教程。
人工智能·深度学习·算法·yolo·目标检测·计算机视觉·1024程序员节
xier_ran1 天前
邻接矩阵的 k 次幂意味着什么?从图论到路径计数的直观解释
算法·图论
B站_计算机毕业设计之家1 天前
预测算法:股票数据分析预测系统 股票预测 股价预测 Arima预测算法(时间序列预测算法) Flask 框架 大数据(源码)✅
python·算法·机器学习·数据分析·flask·股票·预测
想唱rap1 天前
C++ list 类的使用
c语言·开发语言·数据结构·c++·笔记·算法·list
l1t1 天前
利用DuckDB SQL求解集合数学题
数据库·sql·算法·集合·duckdb
yuyanjingtao1 天前
CCF-GESP 等级考试 2024年9月认证C++四级真题解析
c++·算法·青少年编程·gesp·csp-j/s
微笑尅乐1 天前
洗牌算法讲解——力扣384.打乱数组
算法·leetcode·职场和发展