力扣算法之626. 换座位

请添加图片描述

仅作为个人解题记录

在这里插入图片描述
力扣传送门

题目概要

这个题目要求比较明确
1.要求调换前后两个id的值
2.如果最后一个id或者同学是第奇数个的时候,他就不需要交互

我的解
/* Write your T-SQL query statement below */
SELECT a.id,(CASE WHEN a.id=(select count(1) from Seat) AND (select count(1) from Seat)%2=1 THEN a.student  ELSE
(CASE WHEN a.id%2=1 THEN b.student WHEN a.id%2=0 THEN c.student end) END) AS student FROM Seat a LEFT JOIN Seat b ON a.id=b.id-1
LEFT JOIN Seat c ON a.id=c.id+1 order by id 
我的解注解

我最初的思路是调换id,奇数id+1,偶数id-1就行,然后单独处理最后一个id,但是我没有想到处理id后然后处理student值的问题,所以后面我就又选择了去处理student的顺序输出问题,这样id可以不变,正常输出,我选择的是连3次表,错开id连,这样就可以得到例如[1 2 0] 3个id所对应的值,从而按照需要的顺序输出即可,至于判断最后一个值的时候a.id=(select count(1) from Seat),求最大值的id的时候是押了id会从1开始,但是题目其实只说了是连续的,并没有说是从1开始,所以这里其实也没那么合理,使用max可能会更好

优秀解1
declare @student_count int;
select @student_count = count(*)
from Seat;

select
    case -- id remapping
        when id % 2 = 1 and id = @student_count then id -- special case: last row with odd id
        when id % 2 = 1 then id + 1 -- odd -> even
        when id % 2 = 0 then id - 1 -- even -> odd
    end as id,
    student
from Seat
order by id asc;
优秀解1注解

他额外用了个参数去拿最大的值,这个做法不是很推荐,不是有问题,是因为,一般这种都是视图解决,所以实际开发中,可能不是很推荐,他处理的id,思路跟我之前提的大差不差,唯一的区别就是他这个以id排序,是我没有想到的,之前可能确实没有想到,处理之后的id再进行排序

优秀解2
select
 iif(id%2=0 , id-1,iif(id = (select max(id) from Seat),id , id+1)) as id ,student
from Seat order by id
优秀解2注解

他这个思路和优秀解1是一个思路,但是拿出来的原因就是看着写的特别舒服,很简短的就完成了要完成的,也算是提供了解题的另一种方法

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/637214.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ABAP Json解析案例

ABAP解析返回的JSON 案例 DATA:LTOKEN TYPE STRING.DATA: LL_LINES(10),"行数LL_TABIX(10),"循环标号LL_PECNT TYPE P LENGTH 6 DECIMALS 2, "百分比LL_PECET(6),"百分数LL_TEXT(40)."消息CLEAR: LL_LINES,LL_TABIX,LL_PECNT,LL_PECET,LL_TEXT.* …

Java语言-面向对象程序设计-自定义Date类

在Java中,不建议直接自定义Date类,因为java.util.Date和java.util.Calendar类已经提供了处理日期和时间的基本功能,可以使用SimpleDateFormat类格式化日期(较常用的方式)等。 这里将自定义封装一个Date类,用…

【Java】/*类和对象(上)*/

目录 一、什么是类、什么是对象 二、为什么要学习类和对象 三、初识面向过程和面向对象编程 四、如何定义类 4.1 语法形式 4.2 定义示例 示例一:定义一个描述学生的类 示例二:定义一个描述冰箱的类 示例二:定义一个描述狗的类 4.3…

【HUST】信道编码|基于LDPC码的物理层安全编码方案概述

本文对方案的总结是靠 Kimi 阅读相关论文后生成的,我只看了标题和摘要感觉确实是这么回事,并没有阅读原文。 行文逻辑:是我自己设定的,但我并不是这个研究领域的,所以如果章节划分时有问题,期待指出&#x…

java版Spring Cloud+Mybatis+Oauth2+分布式+微服务+实现工程管理系统

鸿鹄工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离构建工程项目管理系统 1. 项目背景 一、随着公司的快速发展,企业人员和经营规模不断壮大。为了提高工程管理效率、减轻劳动强度、提高信息处理速度和准确性,公司对内部工程管…

机器学习补充学习

1、Adaboost算法 Adaboost算法是一种集成学习方法,通过结合多个弱学习器来构建一个强大的预测模型。核心思想:如果一个简单的分类器在训练数据上犯错误,那么它在测试数据上也可能犯错误。 Adaboost通过迭代地训练一系列的分类器&#xff0c…

哪款电脑桌面日历记事本软件好用?推荐优秀的电脑日历记事本

对于众多上班族而言,每天在电脑前忙碌已成为生活常态。若想提升工作效率,简化繁琐的工作流程,选择一款出色的电脑桌面日历与记事本软件就显得至关重要。 然而,在Windows操作系统上设定提醒显得相当繁琐,而系统自带的记…

【Linux】fork和exec中的信号继承探索

fork和exec中的信号继承探索 一、结论二、代码验证2.1 代码编写2.2 代码执行 三、linux源码验证四、APUE中的验证五、其他 一、结论 fork时子进程会继承父进程的信号处理方式,包括父进程设置信号为SIG_DFL或SIG_IGN或捕获后设置自定义处理函数。exce时子进程会继承…

计算机系统的层次结构

操作系统的定义 操作系统(Operating System, OS)是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源的分配;以提供给用户和其他软件方便的接口和环境;它是计算机系统中最基…

【Oracle篇】rman工具实用指南:常用命令详解与实践(第二篇,总共八篇)

💫《博主介绍》:✨又是一天没白过,我是奈斯,DBA一名✨ 💫《擅长领域》:✌️擅长Oracle、MySQL、SQLserver、阿里云AnalyticDB for MySQL(分布式数据仓库)、Linux,也在扩展大数据方向的知识面✌️…

亚马逊SFP有何优势?跨境卖家又该如何申请?

一、亚马逊SFP概述 亚马逊SFP(Seller Fulfilled Prime)是亚马逊为卖家提供的一项物流计划,旨在让满足条件的卖家能够将其产品纳入Prime服务,获得Prime标识,并直接面向Prime会员市场。通过SFP,卖家可以获得亚马逊的流量倾斜&#…

【低照度图像增强系列(7)】RDDNet算法详解与代码实现(同济大学|ICME)

前言 ☀️ 在低照度场景下进行目标检测任务,常存在图像RGB特征信息少、提取特征困难、目标识别和定位精度低等问题,给检测带来一定的难度。 🌻使用图像增强模块对原始图像进行画质提升,恢复各类图像信息,再使用目标检测…

vue项目中如何使用iconfont

导读:vue项目中引入iconfont的方式 iconfont 的三种使用方法 unicode 不常用Font class 像字体一样使用,默认黑色图标,无法修改颜色Symbol 支持多色图标,更灵活,推荐 一、unicode 略 二、Font class 方式一&#…

完美解决原生小程序点击地图markers上的点获取不到对应的坐标信息

需求:地图上有多个markes点,点击每一个获取对应的数据,再根据当前的坐标信息去调用导航。 出现的问题:每次点击的时候获取不到对应的坐标信息,获取到的信息显然不是想要的 原因: 因为你的id不是number类型&…

阿里云手机adb远程连接出现adb问题unauthorized解决

执行adb shell出现下面错误 adb.exe: device unauthorized. This adb servers $ADB_VENDOR_KEYS is not set Try adb kill-server if that seems wrong. Otherwise check for a confirmation dialog on your device.解决:导入和绑定adb的密钥 重启云手机

[Redis]常见数据和内部编码

相关命令 type (key) type 命令实际返回的就是当前键的数据结构类型,它们分别是:string(字符串)、list(列 表)、hash(哈希)、set(集合)、zset(有…

[36#]私有化部署地图套装(全球版)

私有化部署地图套装(全球版),是由全球高清卫星影像与100%全球水陆覆盖高程数据组成的全球三维地图套装。 私有化部署地图套装(全球版) 我们在《难以置信,谁还会用离线地球》一文中,为大家分享…

7 Series FPGAs Integrated Block for PCI Express IP核 Advanced模式配置详解(三)

1 TL Settings Transaction Layer (TL)设置只在Advanced模式下有效。 Endpoint: Unlock and PME_Turn_Off Messages: 与端点的电源管理相关,允许发送解锁和电源管理事件关闭消息。 Root Port: Error Messages: Error Correctable(错误可纠正&#xff09…

IO游戏设计思路

1、TCP ,UDP ,KCP ,QUIC TCP 协议最常用的协议 UDP协议非常规的协议,因为需要在线广播,貌似运营商会有一些影响 KCP 基于UDP的协议,GitHub - l42111996/java-Kcp: 基于java的netty实现的可靠udp网络库(kcp算法),包含fec实现&am…

增强版 Kimi:AI 驱动的智能创作平台,实现一站式内容生成(图片、PPT、PDF)!

前言 基于扣子 Coze 零代码平台,我们从零到一轻松实现了专属 Bot 机器人的搭建。 AI 大模型(LLM)、智能体(Agent)、知识库、向量数据库、知识图谱,RAG,AGI 的不同形态愈发显现,如何…