当前位置: 首页 > 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.zskr.cn/news/1479584.html

相关文章:

  • 为什么我推荐你安装Vivado 18.3而不是最新版?聊聊FPGA开发工具的版本选择与长期支持
  • 终极Windows Btrfs文件系统驱动:跨平台数据存储的完整解决方案
  • 昌吉黄金回收白银回收铂金回收哪家靠谱?2026 实地测评 5 家高人气实体门店 - 信誉隆金银铂奢回收
  • 柳州百达翡丽+法穆兰手表专业回收,26年精选回收店铺排行榜推荐 - 莘州文化
  • BetterNCM安装工具深度解析:Rust语言如何重塑Windows插件管理生态
  • 深度解析AlienFX Tools:硬件级Alienware灯光与风扇控制技术架构
  • 2026最新安康黄金回收白银回收铂金回收攻略,实地甄选五家优质实体店 - 诚金汇钻回收公司
  • Unity游戏模组加载终极指南:MelonLoader技术深度解析
  • 2026郴州黄金回收白银回收铂金回收怎么变现?实地探访 5 家本地老牌回收店铺 - 中安检金银铂钻回收
  • 2026年阿里云OpenClaw/Hermes Agent配置Token Plan部署详细解读
  • Sunshine游戏串流终极指南:5步打造高性能家庭游戏服务器
  • 2026年6月市面上做得好的中央空调系统维保服务商找哪家,商用热水安装/中央空调系统维保,中央空调系统维保公司有哪些 - 品牌推荐师
  • 2026最新昌吉黄金回收白银回收铂金回收攻略,实地甄选五家优质实体店 - 诚金汇钻回收公司
  • 告别龟速下载!用AWS CLI高效获取CSE-CIC-IDS2018数据集的完整保姆级教程
  • 2026本溪黄金回收白银回收铂金回收怎么变现?实地探访 5 家本地老牌回收店铺 - 中安检金银铂钻回收
  • 别再问OAI是什么了!用USRP B210+Ubuntu 20.04,手把手带你搭建自己的4G/5G实验网络
  • 《天龙八部》难念的经
  • 宜宾市2026年黄金回收白银回收铂金回收放心选真心推荐靠谱门店排行+联系电话整理 - 奢金阁
  • 树莓派Pico蜂鸣器选型指南:有源和无源到底怎么选?附GPIO接线与MicroPython代码
  • 金税四期下广州电商财税公司盘点 高性价比选型指南 - 资讯纵览
  • 如何快速获取小红书无水印内容:完整下载工具指南
  • 抖音无水印视频批量下载完整指南:5分钟掌握免费下载技巧
  • EdgeRemover终极指南:Windows系统下Microsoft Edge浏览器卸载与管理的完整解决方案
  • 免费微信聊天记录导出工具:WeChatExporter终极指南
  • Swing表格增强版:支持多级表头、行列合并的JTable可运行示例
  • 告别手动切换:在RT-Thread上为STM32F746实现以太网与RW007 WiFi的双网卡智能切换
  • WarcraftHelper:为经典游戏注入现代兼容性的技术桥梁
  • 联发科设备救砖神器:MTKClient终极指南,三步搞定设备解锁与刷机
  • GEO服务商横向测评:搜索系、AI工具系、发稿系,谁更适合企业长期 - 资讯纵览
  • Cowabunga Lite 终极指南:三步实现iOS深度定制,无需越狱风险