当前位置: 首页 > article >正文

【数据结构-堆】力扣3275. 第 K 近障碍物查询

有一个无限大的二维平面。

给你一个正整数 k ,同时给你一个二维数组 queries ,包含一系列查询:

queries[i] = [x, y] :在平面上坐标 (x, y) 处建一个障碍物,数据保证之前的查询 不会 在这个坐标处建立任何障碍物。
每次查询后,你需要找到离原点第 k 近 障碍物到原点的 距离 。

请你返回一个整数数组 results ,其中 results[i] 表示建立第 i 个障碍物以后,离原地第 k 近障碍物距离原点的距离。如果少于 k 个障碍物,results[i] == -1 。

注意,一开始 没有 任何障碍物。

坐标在 (x, y) 处的点距离原点的距离定义为 |x| + |y| 。

示例 1:
输入:queries = [[1,2],[3,4],[2,3],[-3,0]], k = 2

输出:[-1,7,5,3]

解释:

最初,不存在障碍物。

queries[0] 之后,少于 2 个障碍物。
queries[1] 之后, 两个障碍物距离原点的距离分别为 3 和 7 。
queries[2] 之后,障碍物距离原点的距离分别为 3 ,5 和 7 。
queries[3] 之后,障碍物距离原点的距离分别为 3,3,5 和 7 。

示例 2:
输入:queries = [[5,5],[4,4],[3,3]], k = 1

输出:[10,8,6]

解释:

queries[0] 之后,只有一个障碍物,距离原点距离为 10 。
queries[1] 之后,障碍物距离原点距离分别为 8 和 10 。
queries[2] 之后,障碍物距离原点的距离分别为 6, 8 和10 。

优先队列

class Solution {
public:
    vector<int> resultsArray(vector<vector<int>>& queries, int k) {
        int n = queries.size();
        vector<int> g;
        for(auto& query : queries){
            g.push_back(abs(query[0]) + abs(query[1]));
        }

        priority_queue<int> q;
        vector<int> results(n);
        for(int i = 0; i < n; i++){
            q.push(g[i]);
            if(q.size() > k){
                q.pop();
            }
            
            results[i] = q.size() < k ? -1 : q.top();
        }
        return results;
    }
};

这道题是找第k大的值,那么我们就可以构造一个大小为k的最小堆q,这时候q的队头元素就是第k大的元素。

我们先定义一个数组g来储存queries的距离,然后我们遍历i,建造障碍物实际上就是将g[i]推入到q中,这时候q会对内部元素进行升序排序,然后如果q大小大于k,那么队头元素被推出。这个时候q的队头元素则是第k近的障碍物,我们这时候记录到results中即可。


http://www.kler.cn/a/471695.html

相关文章:

  • 湖南家居现代风,让生活充满舒适感
  • 深入理解 TCP 协议
  • conda安装及demo:SadTalker实现图片+音频生成高质量视频
  • 如何 cURL Elasticsearch:进入 Shell
  • 基于机器学习的京东手机商品评论数据可视化分析系统
  • 一、二极管(应用篇)
  • JimuReport 积木报表 v1.9.2 发布,免费可视化报表
  • Java-JVM详解
  • nginx运行之后显示的是上一个项目,如何解决
  • Linux 系统中 FTP 文件操作常用命令
  • uniapp 使用vue3写法,拿不到uni-popup的ref
  • 深入理解Java并发控制:AQS与ReentrantLock
  • pyarmor加密python脚本
  • 若依框架简介
  • ffmpeg将mp4等文件转mp3
  • Linux内核学习——数据结构
  • 怎么用vs编python文件
  • linux audio(1)-pulseaudio模块数据流
  • 基于selenium和python的UI自动化测试方案
  • 明源地产ERP VisitorWeb_XMLHTTP.aspx SQL注入漏洞复现