首页 > 其他分享 >Leetcode 626-换座位题目解析

Leetcode 626-换座位题目解析

时间:2024-09-25 16:21:23浏览次数:8  
标签:last student Seat Leetcode ID 解析 id SELECT 626

1.题目

编写解决方案来交换每两个连续的学生的座位号。如果学生的数量是奇数,则最后一个学生的id不交换。按 id 升序 返回结果表。

fb02fcb9adc348c088471d91c16f2d8b.png

 

2.数据准备

Create table If Not Exists Seat (id int, student varchar(255));
Truncate table Seat;
insert into Seat (id, student) values ('1', 'Abbot');
insert into Seat (id, student) values ('2', 'Doris');
insert into Seat (id, student) values ('3', 'Emerson');
insert into Seat (id, student) values ('4', 'Green');
insert into Seat (id, student) values ('5', 'Jeames');

3.方法1

332 ms击败 87.59%

1.change1 子查询

  • 选择 Seat 表中的 id 字段。
  • 使用 CASE 语句根据 id 的奇偶性生成新的 new_id
    • 如果 id 是奇数(MOD(id, 2) <> 0),则 new_idid + 1(使其变为偶数)。
    • 如果 id 是偶数,则 new_idid - 1(使其变为奇数)。

2.last 子查询

  • Seat 表中选择最后一条学生记录(根据 id 降序排序)。
  • 这意味着查询将返回具有最大 ID 的学生。

3.主查询

  • change1 子查询中选择 t1.idstudent 字段。
  • 使用 LEFT JOINchange1 的结果与 Seat 表连接,条件是 t1.new_id = t2.id
  • CASE 语句用于决定 student 字段的值:
    • 如果 t2.student 不为空(即找到了对应的学生),则返回该学生的姓名。
    • 如果 t2.student 为空(即没有找到对应的学生),则返回 last 子查询的结果(最后一位学生的姓名)。

 

WITH change1 as(
    SELECT id,
    CASE WHEN MOD(id,2)<>0 then id+1    
    ELSE id-1 END AS new_id
    FROM Seat
),
last as(
    SELECT student 
    FROM Seat 
    ORDER BY id DESC 
    LIMIT 1
)
SELECT 
    t1.id
    ,CASE WHEN t2.student IS NOT NULL THEN student
	    WHEN student IS  NULL THEN (SELECT * from last) END AS student
FROM change1 t1
LEFT JOIN Seat t2 ON t1.new_id = t2.id

4.方法2

314 ms击败 99.10%

1.last 子查询

  • Seat 表中选择 ID 字段,按 ID 降序排列,返回最后一条记录的 ID(即最大 ID)。
  • 这一步骤用于后续条件判断。

2.主查询

  • 使用 CASE 语句处理每个学生的 ID:
    • 偶数 ID:如果 ID 是偶数,返回 id - 1(将偶数转换为其前一个奇数)。
    • 最大 ID:如果 ID 是最大 ID,保持不变,返回该 ID。
    • 奇数 ID:否则(即 ID 是奇数),返回 id + 1(将奇数转换为其后一个偶数)。
  • 同时选择 student 字段。
  • 按处理后的 ID 进行排序。
WITH last as(
    SELECT id FROM Seat ORDER BY id DESC LIMIT 1
)
SELECT CASE WHEN MOD(id,2) = 0 THEN id-1
    WHEN id =(SELECT * from last) then id
    ELSE id+1 end as id,student
from Seat 
order by id

 

 

 

标签:last,student,Seat,Leetcode,ID,解析,id,SELECT,626
From: https://blog.csdn.net/Yaoo415/article/details/142512452

相关文章

  • DNS云解析和普通解析一样吗
    在当今数字化时代,网络的稳定与高效运行至关重要。域名系统(DNS)作为互联网的基础设施之一,其解析服务的质量直接影响着用户的网络体验。近年来,DNS云解析逐渐兴起,与传统的普通解析相比,它们之间存在着显著的区别。首先,在可靠性方面,DNS云解析具有明显优势。普通解析通常依赖于单一的服务......
  • Git 工作区、暂存区与修改全解析
    工作区和暂存区是Git中一个非常重要的概念,弄明白了他们,就弄明白了Git的很多操作到底干了什么。‍工作区(WorkingDirectory)工作区,就是一个目录,比如我的LearnGit​文件夹就是一个工作区:​我们平时更新版本什么的,都是在这里完成的,可以理解成是在这里工作的。‍‍版本库......
  • django点名气象数据分析系统---附源码66265
    目录摘 要第1章 绪 论1.1研究背景与意义1.2 项目背景1.3研究方法和技术第2章 系统分析2.1可行性分析2.2系统流程分析2.2.1数据增加流程2.2.2数据修改流程2.2.3数据删除流程2.3 系统功能分析2.3.1功能性分析2.3.2非功能性分析2.4......
  • 一万字全面解析CRM的定义、分类与核心价值
    1、CRM定义与分类1.1CRM的定义CRM,英文CustomerRelationshipManagement的缩写,中文全称为客户关系管理。通常情况下,人们通常用CRM直接表达客户关系管理软件系统——一个以客户为中心的专门用于管理与客户关系的软件工具,以确保与客户在营销、销售、服务的每一环节上都能实现顺......
  • fetchEventSource使用+源码解析
    fetchEventSource使用+源码解析nonhana杭电大三学生,喜欢搞前端。​关注他创作声明:包含AI辅助创作12人赞同了该文章前言最近由于一些乱七八糟的原因,接触到了国内开发的一些类ChatGPT的API的前端调用与功能集成。概括的来说,就是有一......
  • DNS正向解析和反向解析的区别
    在网络世界中,域名系统(DNS)起着至关重要的作用,它就如同网络世界的导航地图,帮助我们在浩瀚的数字海洋中准确找到目标。而在DNS中,正向解析和反向解析是两个重要的概念,它们有着明显的区别。首先,正向解析是将域名转换为IP地址的过程。当我们在浏览器中输入一个网址,如“www.example.com”......
  • 【JUC并发编程系列】深入理解Java并发机制:Volatile从底层原理解析到高级应用技巧(六、
    文章目录【JUC并发编程系列】深入理解Java并发机制:Volatile从底层原理解析到高级应用技巧(六、Volatile关键字、JMM、重排序、双重检验锁)1.Volatile的特性2.Volatile的用法3.CPU多核硬件架构剖析4.JMM内存模型4.1主要特性4.2JMM的工作原理4.3实现机制5.JMM八......
  • DNS正向解析和反向解析的区别
    在网络世界中,域名系统(DNS)起着至关重要的作用,它就如同网络世界的导航地图,帮助我们在浩瀚的数字海洋中准确找到目标。而在DNS中,正向解析和反向解析是两个重要的概念,它们有着明显的区别。首先,正向解析是将域名转换为IP地址的过程。当我们在浏览器中输入一个网址,如“www.example.com......
  • DNS云解析和普通解析一样吗
    在当今数字化时代,网络的稳定与高效运行至关重要。域名系统(DNS)作为互联网的基础设施之一,其解析服务的质量直接影响着用户的网络体验。近年来,DNS云解析逐渐兴起,与传统的普通解析相比,它们之间存在着显著的区别。首先,在可靠性方面,DNS云解析具有明显优势。普通解析通常依赖于单一的服......
  • 《深度学习》卷积神经网络 使用最优模型、调整学习率 用法解析及案例实现
    目录一、使用最优模型1、什么是最优模型2、如实使用最优模型1)读取参数方法2)调用完整模型方法3)实例完整代码:打印结果:二、调整学习率1、什么是调整学习率2、目的3、调整学习率的方法1)有序调整2)自适应调整参数解析3)自定义调整4、案例使用一、使用最优模型1、......