Leetcode3027. 人员站位的方案数 II

2024-02-18 07:36

本文主要是介绍Leetcode3027. 人员站位的方案数 II,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Every day a Leetcode

题目来源:3027. 人员站位的方案数 II

解法1:暴力

暴力枚举 liupengsay 和小羊肖恩的位置,当 liupengsay 和小羊肖恩的位置满足要求(liupengsay 建立的围栏必须确保 liupengsay 的位置是矩形的左上角,小羊肖恩的位置是矩形的右下角)时,再次遍历数组 points,判断其余点是否会落在 liupengsay 建立的围栏内,若不会,计数器 count 自增 1。

代码:

/** @lc app=leetcode.cn id=3027 lang=cpp** [3027] 人员站位的方案数 II*/// @lc code=start
class Solution
{
public:int numberOfPairs(vector<vector<int>> &points){int n = points.size();int count = 0;for (int i = 0; i < n; i++){int x1 = points[i][0], y1 = points[i][1];for (int j = 0; j < n; j++){if (i == j)continue;int x2 = points[j][0], y2 = points[j][1];if (x1 <= x2 && y1 >= y2) // 围栏合法{bool ok = true;for (int k = 0; k < n; k++){if (k == i || k == j)continue;int x = points[k][0], y = points[k][1];if (x >= x1 && x <= x2 && y >= y2 && y <= y1){ok = false;break;}}if (ok)count++;}}}return count;}
};
// @lc code=end

结果:

超时。

在这里插入图片描述

复杂度分析:

时间复杂度:O(n3),其中 n 是数组 points 的元素个数。

空间复杂度:O(1)。

解法2:排序 + 枚举

将 points 按照横坐标从小到大排序,横坐标相同的,按照纵坐标从大到小排序。

如此一来,在枚举 points[i] 和 points[j] 时(i<j),就只需要关心纵坐标的大小。

固定 points[i],然后枚举 points[j]:

  • 如果 points[j][1] 比之前枚举的点的纵坐标都大,那么矩形内没有其它点,符合要求,答案加 1。
  • 如果 points[j][1] 小于等于之前枚举的某个点的纵坐标,那么矩形内有其它点,不符合要求。

所以在枚举 points[j] 的同时,需要维护纵坐标的最大值 maxY。这也解释了为什么横坐标相同的,按照纵坐标从大到小排序。这保证了横坐标相同时,我们总是优先枚举更靠上的点,不会误把包含其它点的矩形也当作符合要求的矩形。

最后返回答案。

代码:

/** @lc app=leetcode.cn id=3027 lang=cpp** [3027] 人员站位的方案数 II*/// @lc code=start// 排序 + 枚举class Solution
{
public:int numberOfPairs(vector<vector<int>> &points){sort(points.begin(), points.end(), [](const auto &p, const auto &q){ return p[0] != q[0] ? p[0] < q[0] : p[1] > q[1]; });int n = points.size();int count = 0;for (int i = 0; i < n; i++){int y0 = points[i][1];int max_y = INT_MIN;for (int j = i + 1; j < n; j++){int y = points[j][1];if (y <= y0 && y > max_y){max_y = y;count++;}}}return count;}
};
// @lc code=end

结果:

在这里插入图片描述

复杂度分析:

时间复杂度:O(n2),其中 n 是数组 points 的元素个数。

空间复杂度:O(1)。

这篇关于Leetcode3027. 人员站位的方案数 II的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/720475

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

高效+灵活,万博智云全球发布AWS无代理跨云容灾方案!

摘要 近日,万博智云推出了基于AWS的无代理跨云容灾解决方案,并与拉丁美洲,中东,亚洲的合作伙伴面向全球开展了联合发布。这一方案以AWS应用环境为基础,将HyperBDR平台的高效、灵活和成本效益优势与无代理功能相结合,为全球企业带来实现了更便捷、经济的数据保护。 一、全球联合发布 9月2日,万博智云CEO Michael Wong在线上平台发布AWS无代理跨云容灾解决方案的阐述视频,介绍了

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

AI基础 L9 Local Search II 局部搜索

Local Beam search 对于当前的所有k个状态,生成它们的所有可能后继状态。 检查生成的后继状态中是否有任何状态是解决方案。 如果所有后继状态都不是解决方案,则从所有后继状态中选择k个最佳状态。 当达到预设的迭代次数或满足某个终止条件时,算法停止。 — Choose k successors randomly, biased towards good ones — Close

JavaFX应用更新检测功能(在线自动更新方案)

JavaFX开发的桌面应用属于C端,一般来说需要版本检测和自动更新功能,这里记录一下一种版本检测和自动更新的方法。 1. 整体方案 JavaFX.应用版本检测、自动更新主要涉及一下步骤: 读取本地应用版本拉取远程版本并比较两个版本如果需要升级,那么拉取更新历史弹出升级控制窗口用户选择升级时,拉取升级包解压,重启应用用户选择忽略时,本地版本标志为忽略版本用户选择取消时,隐藏升级控制窗口 2.

如何选择SDR无线图传方案

在开源软件定义无线电(SDR)领域,有几个项目提供了无线图传的解决方案。以下是一些开源SDR无线图传方案: 1. **OpenHD**:这是一个远程高清数字图像传输的开源解决方案,它使用SDR技术来实现高清视频的无线传输。OpenHD项目提供了一个完整的工具链,包括发射器和接收器的硬件设计以及相应的软件。 2. **USRP(Universal Software Radio Periphera

从0到1,AI我来了- (7)AI应用-ComfyUI-II(进阶)

上篇comfyUI 入门 ,了解了TA是个啥,这篇,我们通过ComfyUI 及其相关Lora 模型,生成一些更惊艳的图片。这篇主要了解这些内容:         1、哪里获取模型?         2、实践如何画一个美女?         3、附录:               1)相关SD(稳定扩散模型的组成部分)               2)模型放置目录(重要)

MyBatis 切换不同的类型数据库方案

下属案例例当前结合SpringBoot 配置进行讲解。 背景: 实现一个工程里面在部署阶段支持切换不同类型数据库支持。 方案一 数据源配置 关键代码(是什么数据库,该怎么配就怎么配) spring:datasource:name: test# 使用druid数据源type: com.alibaba.druid.pool.DruidDataSource# @需要修改 数据库连接及驱动u

学习记录:js算法(二十八):删除排序链表中的重复元素、删除排序链表中的重复元素II

文章目录 删除排序链表中的重复元素我的思路解法一:循环解法二:递归 网上思路 删除排序链表中的重复元素 II我的思路网上思路 总结 删除排序链表中的重复元素 给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回 已排序的链表 。 图一 图二 示例 1:(图一)输入:head = [1,1,2]输出:[1,2]示例 2:(图

一种改进的red5集群方案的应用、基于Red5服务器集群负载均衡调度算法研究

转自: 一种改进的red5集群方案的应用: http://wenku.baidu.com/link?url=jYQ1wNwHVBqJ-5XCYq0PRligp6Y5q6BYXyISUsF56My8DP8dc9CZ4pZvpPz1abxJn8fojMrL0IyfmMHStpvkotqC1RWlRMGnzVL1X4IPOa_  基于Red5服务器集群负载均衡调度算法研究 http://ww