力扣2978. 对称坐标

devtools/2024/11/29 7:33:00/

一、数据

2978. 对称坐标

表: Coordinates

+-------------+------+
| Column Name | Type |
+-------------+------+
| X           | int  |
| Y           | int  |
+-------------+------+
每一行包括 X 和 Y,都是整数。表格可能包含重复值。

如果两个坐标 (X1, Y1) 和 (X2, Y2) 满足条件 X1 == Y2 和 X2 == Y1,则它们被称为 对称 坐标。

编写一个解决方案,找出在所有这些对称坐标中,满足条件 X1 <= Y1 的唯一坐标。

按照 X 和 Y 分别 升序 排列结果表。

结果格式如下示例所示。

示例 1:

输入:
Coordinates table:
+----+----+
| X  | Y  |
+----+----+
| 20 | 20 |
| 20 | 20 |
| 20 | 21 |
| 23 | 22 |
| 22 | 23 |
| 21 | 20 |
+----+----+
输出:
+----+----+
| x  | y  |
+----+----+
| 20 | 20 |
| 20 | 21 |
| 22 | 23 |
+----+----+
解释:
- (20, 20) 和 (20, 20) 是对称坐标,因为 X1 == Y2 和 X2 == Y1。所以 (20, 20) 被显示为独特的坐标。
- (20, 21) 和 (21, 20) 是对称坐标,因为 X1 == Y2 和 X2 == Y1。然而,只有 (20, 21) 会被显示,因为 X1 <= Y1。
- (23, 22) 和 (22, 23) 是对称坐标,因为 X1 == Y2 和 X2 == Y1。然而,只有 (22, 23) 会被显示,因为 X1 <= Y1。
输出表按照 X 和 Y 升序排列。

二、分析

本题的解法就是将表格进行自关联,然后让第一个坐标的X值等于第二个坐标的Y值,第一个坐标的Y值等于第二个坐标的X值,且每个坐标的X值小于等于Y值,那么这样就十分简单了,直接进行表关联,然后直接写关联条件即可。

但是!!!

题目本身的意义是将本身数据与表中的其他数据进行关联,而直接进行自关联的话会让自己也关联上了自己,如果坐标的X值和Y值都相等,那么就会出现多余数据,所以我们应该香个办法解决这个问题。

那就是先对表中的数据进行排序处理,然后在关联时,并让数据的排名不相等,这样就不会初夏自己关联自己的情况。

三、代码

with t as (select *,row_number() over () id -- 首先对表中的数据进行排名from coordinates
)selectdistinct c1.X,c1.Y
from t c1
join t c2 on c1.X = c2.Y and c1.Y = c2.X and c1.X<=c1.Y and c1.id<>c2.id -- 关联条件再加上一个排名的id不相等
order by c1.X,c1.Y

四、分析

总体来说,本题难度较小,就是需要注意到自己关联自己的情况。


http://www.ppmy.cn/devtools/137860.html

相关文章

共享售卖机语音芯片方案选型:WTN6020引领智能化交互新风尚

在共享经济蓬勃发展的今天&#xff0c;共享售卖机作为便捷购物的新形式&#xff0c;正逐步渗透到人们生活的各个角落。为了提升用户体验&#xff0c;增强设备的智能化和互动性&#xff0c;增加共享售卖机的语音功能就显得尤为重要。 共享售卖机语音方案选型&#xff1a; WTN602…

微知-lspci访问到指定的PCIe设备的几种方式?(lspci -s bus;lspci -d devices)

通过bdf号查看 -s &#xff08;bus&#xff09; lspci -s 03:00.0通过vendor id或者device id等设备查看 -d &#xff08;device&#xff09; lspci -d 15b3: #这里是vendor号&#xff0c;所以在前面 lspci -d :1021 #这里是设备号&#xff0c;所以要:在前vendorid和deviceid…

Xilinx Blockset Gateway In 和Gateway out模块使用及参数配置

目录 一、Gateway InSimulink数据到System Generator数据的转换Gateway BlocksBlock Parameters&#xff08;模块参数&#xff09;Basic选项卡参数Implementation选项卡参数 二、Gateway OutGateway BlocksBlock Parameters&#xff08;模块参数&#xff09;Basic选项卡参数Imp…

软文实战技巧:如何利用媒体平台资源提升品牌影响力?

在数字化时代&#xff0c;媒体资源不仅是品牌传播的重要工具&#xff0c;更是提升品牌影响力的关键所在。借助媒体的力量&#xff0c;品牌可以更广泛地触达目标受众&#xff0c;更精准地传递品牌理念&#xff0c;更有效地与消费者建立情感连接。 而软文作为一种低成本、高效率…

谈谈微服务的常用组件

由于微服务给系统开发带来了一些问题和挑战&#xff0c;如服务调用的复杂性、分布式事务的处理、服务的动态管理等&#xff0c;为了更好地解决这些问题和挑战&#xff0c;各种微服务治理的组件应运而生&#xff0c;充当微服务架构的基石和支撑&#xff0c;常用组件如下表&#…

MATLAB 批量读取endnote导出的参考文献

endnote中有很多分组文件夹&#xff0c;如果批量导出 方法1 进入到某个文件组中&#xff0c;选中所有文件夹&#xff0c;右键->复制文献到->新库&#xff0c;即可生成一个只有指定文件组的新的endnote库 方法2 如果方法1导出的库打不开&#xff0c;我的就是这样&…

黑马程序员Java项目实战《苍穹外卖》Day01

苍穹外卖-day01 课程内容 软件开发整体介绍苍穹外卖项目介绍开发环境搭建导入接口文档Swagger 项目整体效果展示&#xff1a; ​ 管理端-外卖商家使用 ​ 用户端-点餐用户使用 当我们完成该项目的学习&#xff0c;可以培养以下能力&#xff1a; 1. 软件开发整体介绍 作为一…

手机镜头组如此突出,考虑恢复以前设计

现在手头看重照相。结果导致的问题就是&#xff0c;在背部要突出很高&#xff0c;以容纳镜头组件。这种设计真的好吗&#xff1f;并不见得。真实照片&#xff1a; VIVO X200系列镜头组照片-CSDN博客 考虑到现在镜头的情形&#xff0c;我建议恢复以前的设计&#xff0c;就是把镜…