力扣2978. 对称坐标

一、数据

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.mzph.cn/diannao/62143.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据结构 (13)串的应用举例

前言 数据结构中的串&#xff08;String&#xff09;&#xff0c;也称为字符串&#xff0c;是一种常见且重要的数据结构&#xff0c;在计算机科学中被广泛应用于各种场景。 一、文本处理 文本编辑器&#xff1a;在文本编辑器中&#xff0c;字符串被用来表示和存储用户输入的文本…

【人工智能】AutoML自动化机器学习模型构建与优化:使用Auto-sklearn与TPOT的实战指南

解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 机器学习模型的构建和优化是一个复杂且耗时的过程,涉及特征工程、模型选择、超参数调优等多个环节。AutoML(Automated Machine Learning)旨在通过自动化的方式来简化这些流程,提高开发效率并提升模型表现。Au…

PointNet++论文复现

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua小谢&#xff0c;在这里我会分享我的知识和经验。&am…

深入讲解Spring Boot和Spring Cloud,外加图书管理系统实战!

很抱歉&#xff0c;我的疏忽&#xff0c;说了这么久还没有给大家详细讲解过Spring Boot和Spring Cloud,那今天给大家详细讲解一下。 大家可以和下面这三篇博客一起看&#xff1a; 1、Spring Boot 和 Spring Cloud 微服务开发实践详解https://blog.csdn.net/speaking_me/artic…

《气候与环境研究》

《气候与环境研究》是我国在气候和环境学科交叉领域的中文学术期刊&#xff0c;报道气候与环境研究领域的创新性研究成果&#xff0c;注重基础研究和应用研究相结合&#xff0c;为国民经济和社会的可持续发展、保护人类生存环境和防灾减灾服务。覆盖的学科范围有大气科学及海洋…

时间的礼物:如何珍视每一刻

《时间的礼物&#xff1a;如何珍视每一刻》 夫时间者&#xff0c;宇宙之精髓&#xff0c;生命之经纬&#xff0c;悄无声息而流转不息&#xff0c;如织锦之细线&#xff0c;串联古今&#xff0c;贯穿万物。 人生短暂&#xff0c;犹如白驹过隙&#xff0c;倏忽而逝&#xff0c;…

NVIDIA /CUDA 里面的clock rate详细介绍

本文主要介绍&#xff1a; cuda中的时钟频率具体有哪些&#xff1f;clock rate怎么调节&#xff1f; cuda中可以通过nvml 函数或者命令来调整时钟频率&#xff08;clock rate&#xff09; 介绍 命令行 nvdia-smi -q -i 0 可以查询device相关参数&#xff0c;可以用后面的命…

扫振牙刷设计思路以及技术解析

市面上目前常见的就两种&#xff1a;扫振牙刷和超声波牙刷 为了防水&#xff0c;表面还涂上了一层防水漆 一开始的电池管理芯片&#xff0c;可以让充电更加均衡。 如TP4056 第一阶段以恒流充电&#xff1b;当电压达到预定值时转入第二阶段进行恒压充电&#xff0c;此时电流逐…

电磁继电器

它的控制原理很简单&#xff0c;当我们给它的线圈接电&#xff0c;这个线圈就有了磁性&#xff0c;它上面的衔铁就会被吸引&#xff0c;这样小灯泡就会点亮 继电器于MOS管的差别在于&#xff0c;继电器可以很轻松的胜任高电压、大电流的场合 我们从外壳上可以看到 30VDC&#x…

【Jenkins】自动化部署 maven 项目笔记

文章目录 前言1. Jenkins 新增 Maven 项目2. Jenkins 配置 Github 信息3. Jenkins 清理 Workspace4. Jenkins 配置 后置Shell脚本后记 前言 目标&#xff1a;自动化部署自己的github项目 过程&#xff1a;jenkins 配置、 shell 脚本积累 相关连接 Jenkins 官方 docker 指导d…

LangGraph中的State管理

本教程将介绍如何使用LangGraph库构建和测试状态图。我们将通过一系列示例代码&#xff0c;逐步解释程序的运行逻辑。 1. 基本状态图构建 首先&#xff0c;我们定义一个状态图的基本结构和节点。 定义状态类 from langgraph.graph import StateGraph, START, END from typi…

Go-Web之TCP网络连接

函数学习 net.Listen:用于创建一个TCP监听器&#xff0c;在指定地址上监听传入的连接listrener.Accept:这个方法会阻塞&#xff0c;直到有新的客户端连接&#xff0c;当连接到来时&#xff0c;它会返回一个net.Conn类型的连接对象&#xff0c;表示客户端和服务器之间的TCP连接…

Excel的图表使用和导出准备

目的 导出Excel图表是很多软件要求的功能之一&#xff0c;那如何导出Excel图表呢&#xff1f;或者说如何使用Excel图表。 一种方法是软件生成图片&#xff0c;然后把图片写到Excel上&#xff0c;这种方式&#xff0c;因为格式种种原因&#xff0c;导出的图片不漂亮&#xff0c…

Spring WebFlux SSE(服务器发送事件)的正确用法

在SpringBoot2下SSE实现是返回一个SseEmitter,然后通过SseEmitter的send方法来发送事件. 在SpringBoot3的WebFlux 下SSE实现是返回一个Flux<ServerSentEvent<?>>,但是怎么手动向客户端发送SSE事件搜遍全网也没有看到一个讲清楚的.网上的例子一般都是这样的: GetM…

vue实现滚动条滑动到底部分页调取后端接口加载数据

一、案例效果 二、前提条件 接口返回数据 三、案例代码 子组件 const $emit defineEmits([cloneItem, updateList]);const props defineProps({rightList: {type: Array,},chartTableData: {type: Array as () > ChartListType[],},deleteChartInfo: {type: Object,}…

Ubuntu中使用多版本的GCC

我的系统中已经安装了GCC11.4&#xff0c;在安装cuda时出现以下错误提示&#xff1a; 意思是当前的GCC版本过高&#xff0c;要在保留GCC11.4的同时安装GCC9并可以切换&#xff0c;可以通过以下步骤实现&#xff1a; 步骤 1: 安装 GCC 9 sudo apt-get update sudo apt-get ins…

【Android】RecyclerView回收复用机制

概述 RecyclerView 是 Android 中用于高效显示大量数据的视图组件&#xff0c;它是 ListView 的升级版本&#xff0c;支持更灵活的布局和功能。 我们创建一个RecyclerView的Adapter&#xff1a; public class MyRecyclerView extends RecyclerView.Adapter<MyRecyclerVie…

Kotlin DSL Gradle 指南

本文是关于 Kotlin DSL Gradle 的指南&#xff08;上篇&#xff09;&#xff0c;介绍了 Gradle 作为 Android 开发构建工具的作用及优势&#xff0c;包括初始配置、生命周期、依赖管理、Task 相关内容。如 Task 的创建、自定义、各种方法和属性&#xff0c;以及文件操作等&…

数据库导论

data 数据是数据库中存储的基本数据&#xff0c;描述事物的符号称为数据。 DB 数据库是长期存储在计算机内&#xff0c;有组织&#xff0c;可共享的大量数据的集合。数据库中的数据按照一定的数据模型组织&#xff0c;描述和存储&#xff0c;具有较小的冗余度&#xff0c;较…

HTML实现 扫雷游戏

前言&#xff1a; 游戏起源与发展 扫雷游戏的雏形可追溯到 1973 年的 “方块&#xff08;cube&#xff09;” 游戏&#xff0c;后经改编出现了 “rlogic” 游戏&#xff0c;玩家需为指挥中心探出安全路线避开地雷。在此基础上&#xff0c;开发者汤姆・安德森编写出了扫雷游戏的…