LeetCode MySQL 1204. 最后一个能进入电梯的人(累加/变量/窗口函数)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode MySQL 1204. 最后一个能进入电梯的人(累加/变量/窗口函数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 1. 題目
- 2. 解題
1. 題目
表: Queue
+-------------+---------+ | Column Name | Type | +-------------+---------+ | person_id | int | | person_name | varchar | | weight | int | | turn | int | +-------------+---------+ person_id 是這個表的主鍵。 該表展示了所有等待電梯的人的信息。 表中 person_id 和 turn 列將包含從 1 到 n 的所有數字, 其中 n 是表中的行數。電梯最大載重量為 1000。
寫一條 SQL 查詢語句查找最后一個能進入電梯且不超過重量限制的 person_name 。
題目確保隊列中第一位的人可以進入電梯 。
查詢結果如下所示 :
Queue 表 +-----------+-------------------+--------+------+ | person_id | person_name | weight | turn | +-----------+-------------------+--------+------+ | 5 | George Washington | 250 | 1 | | 3 | John Adams | 350 | 2 | | 6 | Thomas Jefferson | 400 | 3 | | 2 | Will Johnliams | 200 | 4 | | 4 | Thomas Jefferson | 175 | 5 | | 1 | James Elephant | 500 | 6 | +-----------+-------------------+--------+------+Result 表 +-------------------+ | person_name | +-------------------+ | Thomas Jefferson | +-------------------+為了簡化,Queue 表按 turn 列由小到大排序。 上例中 George Washington(id 5), John Adams(id 3) 和 Thomas Jefferson(id 6) 將可以進入電梯, 因為他們的體重和為 250 + 350 + 400 = 1000。 Thomas Jefferson(id 6) 是最后一個體重合適并進入電梯的人。來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/last-person-to-fit-in-the-elevator
著作權歸領扣網絡所有。商業轉載請聯系官方授權,非商業轉載請注明出處。
2. 解題
類似題目:
LeetCode 1308. 不同性別每日分數總計(累加/變量/窗口函數)
1613 ms
變量法:
select person_name from (select person_name, @pre := @pre + weight as totalwfrom Queue, (select @pre := 0) tmporder by turn ) t where totalw <= 1000 order by totalw desc limit 1651 ms
窗口函數
select person_name from (select person_name, sum(weight) over(order by turn) totalwfrom Queue ) t where totalw <= 1000 order by totalw desc limit 1639 ms
我的CSDN博客地址 https://michael.blog.csdn.net/
長按或掃碼關注我的公眾號(Michael阿明),一起加油、一起學習進步!
總結
以上是生活随笔為你收集整理的LeetCode MySQL 1204. 最后一个能进入电梯的人(累加/变量/窗口函数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode 647. 回文子串(D
- 下一篇: LeetCode MySQL 1421.