news 2026/6/7 11:43:06

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
千问 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 排序时使用的栈空间。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/7 11:42:07

Windows下可调试的串口数据监听工具(含计重协议识别与MFC源码)

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;专为Windows平台设计的串口通信监控工具&#xff0c;基于Visual C 6.0和MFC框架开发&#xff0c;支持实时捕获、显示和解析COM端口收发的原始数据。界面直观&#xff0c;同时呈现十六进制与ASCII格式内容&#…

作者头像 李华
网站建设 2026/6/7 11:41:27

告别枯燥手册!用PML2给PDMS写个自动建模小工具(附完整代码)

告别枯燥手册&#xff01;用PML2给PDMS写个自动建模小工具&#xff08;附完整代码&#xff09;在三维工厂设计领域&#xff0c;AVEVA PDMS作为行业标杆软件&#xff0c;其强大的建模能力常被繁琐的手动操作所拖累。当工程师需要批量创建数十个相同规格的管廊支架时&#xff0c;…

作者头像 李华
网站建设 2026/6/7 11:38:49

C语言写的图书管理小工具:带数据文件和完整源码的命令行程序

本文还有配套的精品资源&#xff0c;点击获取 简介&#xff1a;一个轻量级的图书信息管理控制台程序&#xff0c;用标准C语言开发&#xff0c;不依赖图形界面或第三方库&#xff0c;纯文本交互操作。支持添加新书、按书名或ISBN查找、修改库存数量、删除下架图书&#xff0c…

作者头像 李华
网站建设 2026/6/7 11:38:47

告别APN!5G时代DNN配置实战:从华为UDM脚本到用户签约全流程解析

告别APN&#xff01;5G时代DNN配置实战&#xff1a;从华为UDM脚本到用户签约全流程解析在5G网络部署的浪潮中&#xff0c;核心网配置工程师正面临从传统4G APN到5G DNN的技术转型。这种转变不仅仅是术语的更新&#xff0c;更代表着网络架构和服务模式的根本性变革。本文将带您深…

作者头像 李华
网站建设 2026/6/7 11:38:23

Windows字体渲染终极优化:3步让文字清晰如Mac的完整指南

Windows字体渲染终极优化&#xff1a;3步让文字清晰如Mac的完整指南 【免费下载链接】mactype Better font rendering for Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/mactype 还在为Windows系统下字体显示模糊、边缘发虚而烦恼吗&#xff1f;MacType是一个…

作者头像 李华