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

千问 LeetCode 3027. 人员站位的方案数 II C语言实现

针对 LeetCode 3027. 人员站位的方案数 II,由于点的数量 n 最大可达 1000,如果采用 O(n^3) 的暴力枚举方法会超时。最优的解法是采用 排序 + 枚举,将时间复杂度优化至 O(n^2)。

核心思路
1. 排序规则:将所有的点按照横坐标 x 从小到大排序;如果横坐标相同,则按照纵坐标 y 从大到小排序。
2. 枚举左上角:外层循环遍历排序后的点,将其作为 Alice 的位置(即矩形的左上角)。
3. 枚举右下角:内层循环向后遍历,寻找 Bob 的位置(即矩形的右下角)。为了保证矩形内部和边缘没有其他点,Bob 的纵坐标必须小于等于 Alice 的纵坐标,并且 Bob 的纵坐标必须严格大于之前枚举过的所有右下角点的纵坐标(维护一个当前最大纵坐标 max_y)。

C语言实现代码

#include <stdlib.h>
#include <limits.h>

// 比较函数:按 x 升序排序,x 相同时按 y 降序排序
int cmp(const void *a, const void *b) {
int *p1 = *(int **)a;
int *p2 = *(int **)b;
if (p1[0] != p2[0]) {
return p1[0] - p2[0];
}
return p2[1] - p1[1];
}

int numberOfPairs(int** points, int pointsSize, int* pointsColSize) {
// 1. 对点进行排序
qsort(points, pointsSize, sizeof(int *), cmp);

int ans = 0;

// 2. 枚举左上角的点 (Alice)
for (int i = 0; i < pointsSize; i++) {
int y_alice = points[i][1];
int max_y = INT_MIN; // 记录当前枚举过程中,右下角点的最大纵坐标

// 3. 枚举右下角的点 (Bob)
for (int j = i + 1; j < pointsSize; j++) {
int y_bob = points[j][1];

// Bob 必须在 Alice 的下方或同一水平线,且纵坐标大于之前记录的最大纵坐标
// 这样能保证矩形内和边界上除了 Alice 和 Bob 没有其他点
if (y_bob <= y_alice && y_bob > max_y) {
ans++;
max_y = y_bob; // 更新最大纵坐标
}
}
}

return ans;
}

复杂度分析
* 时间复杂度:O(n^2),其中 n 是数组 points 的长度。排序的时间复杂度为 O(n log n),双重循环枚举点对的时间复杂度为 O(n^2),整体由 O(n^2) 主导。
* 空间复杂度:O(log n),主要为 qsort 排序时使用的栈空间。

http://www.jsqmd.com/news/967841/

相关文章:

  • 2026百达翡丽售后版图焕新升级:官方维修新址与全新服务热线正式公示 - 百达翡丽中国服务中心
  • 为什么我推荐你安装Vivado 18.3而不是最新版?聊聊FPGA开发工具的版本选择与长期支持
  • 林芝百达翡丽+法穆兰手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 抖音批量下载神器:3步搞定无水印视频、音乐和直播录制
  • 别再怕抖振了!用Python和Simulink手把手教你搞定滑模控制(附代码和仿真对比)
  • 终极Windows Btrfs文件系统驱动:跨平台数据存储的完整解决方案
  • 2026北京黄金回收白银回收铂金回收怎么变现?实地探访 5 家本地老牌回收店铺 - 中安检金银铂钻回收
  • 昌吉黄金回收白银回收铂金回收哪家靠谱?2026 实地测评 5 家高人气实体门店 - 信誉隆金银铂奢回收
  • 柳州百达翡丽+法穆兰手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • 文本交付的Pull与Push:人机协同的信息流设计
  • 2026年OpenClaw/Hermes Agent配置Token Plan保姆式教学
  • 2026年广州黄埔区驾校排行榜:这5家优质驾校值得推荐 - 资讯纵览
  • 3分钟学会ncmdump:网易云音乐加密格式终极转换指南
  • VS Code字体配置避坑指南:从下载Operator Mono到完美显示连字(Mac/Windows通用)
  • 大理白族自治州2026年黄金回收白银回收铂金回收权威门店 TOP5+正规可靠机构电话与地址汇总 - 开始就结束
  • 2026最新达州黄金回收白银回收铂金回收攻略,实地甄选五家优质实体店 - 诚金汇钻回收公司
  • 别再暴力扫描了!指纹识别三层匹配 + 缓存优化,让你的扫描器快10倍
  • BetterNCM安装工具深度解析:Rust语言如何重塑Windows插件管理生态
  • 包头黄金回收白银回收铂金回收哪家靠谱?2026 实地测评 5 家高人气实体门店 - 信誉隆金银铂奢回收
  • 2026最新安康黄金回收白银回收铂金回收攻略,实地甄选五家优质实体店 - 诚金汇钻回收公司
  • Unity游戏模组加载终极指南:MelonLoader技术深度解析
  • 基于LSTM的电力负荷短期预测工具包(支持历史负荷+实时气象多特征输入)
  • Sunshine终极指南:5步搭建高性能家庭游戏串流服务器
  • 2026年华为云OpenClaw/Hermes Agent配置Token Plan操作全解读
  • 深度解析AlienFX Tools:硬件级Alienware灯光与风扇控制技术架构
  • 大连市2026年黄金回收白银回收铂金回收权威门店 TOP5+正规可靠机构电话与地址汇总 - 开始就结束
  • 「年度盘点」2026网络安全从业者必备的5大开源工具箱(附部署教程)
  • TegraRcmGUI技术揭秘:Nintendo Switch RCM漏洞利用的Windows图形化实现方案
  • 2026年大庆SCMP课程咨询入口怎么确认?众智商学院官网400和冯老师 - 众智商学院官方
  • 2026郴州黄金回收白银回收铂金回收怎么变现?实地探访 5 家本地老牌回收店铺 - 中安检金银铂钻回收