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

【LeetCode】3025. 人员站位的方案数 I(康复-T2)

题目描述

人员站位的方案数 I
在这里插入图片描述

问题描述

根据题意,要挨个寻找成对的对角点,从直观分析,

  1. 挨个成对遍历
  2. 判断算法属于对角条件
  3. 判断其他节点是否在对角点的范围内

这种属于三重循环,换个思路。
以一个点为基准,判断有哪些节点是满足该基准节点的右下角对角点,然后再判断对角点间是否重叠

代码

v1

思路解析,先二重循环遍历,遍历每一对节点,使用一个二维数组记录每一个节点的满足右下角的节点。然后将节点是右下角节点判读是否覆盖

class Solution {
public:bool ifCorners(vector<int> p1,vector<int> p2){if(p1[0]<=p2[0] &&p1[1]>p2[1]) return true;else if(p1[0]<p2[0] &&p1[1]==p2[1]) return true;return false;}int numberOfPairs(vector<vector<int>>& points) {int N = points.size();int count = 0;vector<vector<int>> corner_vec;for(int i=0;i<N;i++){vector<int> tmp;for(int j=0;j<N;j++){if(j==i) continue;if(points[i]==points[j]) continue;    //相等排除if(ifCorners(points[i],points[j])) tmp.push_back(j);}corner_vec.push_back(tmp);}//获得对角关系for(int i=0;i<N;i++){if(corner_vec[i].size()==0) continue;if(corner_vec[i].size()==1) {count++;continue;}sort(corner_vec[i].begin(),corner_vec[i].end(),[&](int a,int b){return points[a][0]<points[b][0]|| (points[a][0]==points[b][0]&&points[a][1]>points[b][1]);});int aim_idx = 0;for(int j=1;j<corner_vec[i].size();j++){int p1=corner_vec[i][aim_idx];int p2=corner_vec[i][j];if(points[p1][0]<points[p2][0] && points[p1][1]<points[p2][1]){count++;aim_idx = j;}}count++;   }return count;}
};

v2

对点集进行排序,满足条件x1<x2,y1>y2,进行排序,然后最左上角进行依次遍历
设置一个节点的更新边界,用于判断是否满足对角点的所有条件
以点为基准,第二个节点是b,同时更新下边界,第三个节点是a,其不在边界范围,排除,第三个节点是c,在上下边界范围内,然后进一步更新下边界。
总之就是,一步一步更新对角节点的上下边界。
在这里插入图片描述

class Solution {
public:int numberOfPairs(vector<vector<int>>& points) {int N=points.size();sort(points.begin(),points.end(),[](auto& p1,auto& p2){return (p1[0]<p2[0]) || (p1[0]==p2[0] && p1[1] > p2[1]);});int count = 0;for(int i=0;i<N-1;i++){auto p = points[i];int y_b= INT_MIN;int y_p = p[1];for(int j=i+1;j<N && y_b < y_p;j++){if(points[j][1] > y_b && points[j][1] <= y_p){y_b = points[j][1];count++;}}}return count;}
};
http://www.dtcms.com/a/363473.html

相关文章:

  • 【ComfyUI】SDXL Refiner 提示进一步提升生成图像的质量
  • 族 20 魅族 note16 meizu M20 MEIZU NOTE16 解锁BL bootloader
  • Linux电脑怎样投屏到客厅的大电视?支持远程投屏吗?
  • 构建高性能企业级搜索?Amazon CloudSearch全攻略:从核心概念到落地实践
  • 第 2 讲:Kafka Topic 与 Partition 基础
  • 心路历程-vim编辑器
  • 详解kafka streams(二)
  • Kafka 架构详解
  • 数据结构_队列(C语言实现)
  • 图论简介与图神经网络(Dijkstra算法,图卷积网络GCN实战)
  • 只需几条命令,本地体验微软最新长文本语音合成 VibeVoice(支持中文)
  • 电子电气架构 --- 当前企业EEA现状(上)
  • 2025牛客暑期多校训练营4(FBDGI)
  • MacOS - 记录MacOS发烫的好几天 - 幕后黑手竟然是
  • KVM 虚拟化基础与实操
  • 新质生产力的中枢神经:人工智能+时代的实时视频架构
  • Ubuntu 用户和用户组
  • rocketmq console dashboard 2.0控制台
  • 均匀分布直线阵的常规波束形成方位谱和波束图
  • MySQL中binlog、redolog与undolog的不同之处解析
  • 存算一体前沿技术——无需比较器即可高效排序,性能提升高达百倍
  • 轻型载货汽车变速器设计cad+设计说明书
  • 广东某地非金属矿山自动化监测服务项目
  • “转”若惊鸿,电磁“通”——耐达讯自动化RS485转Profinet点亮能源新章
  • Understanding the Flap T in American English
  • 视频转文字软件哪个免费好用?2025年5款实用工具实测,助力办公效率!
  • 无人机GPS悬停模块技术解析
  • # pdf.js完全指南:构建现代Web PDF查看与解析解决方案
  • 无人机各种接头焊接方法
  • AI 時代的白帽與黑帽 SEO:最佳實踐與趨勢解析