mysql数据库进阶-leetcode-10道2

其他题目需要money解锁-.-

196. Delete Duplicate Emails

解析:删除重复值邮箱
答案:DELETE P1 FROM Person p1,Person P2 WHERE P1.Email = P2.Email AND P1.Id > P2.Id

197. Rising Temperature

解析:查找温度相对于前一天上升的数据;需要使用sql日期处理函数
考察:sql的日期处理函数TO_DAYS使用
答案:SELECT W1.Id FROM Weather W1,Weather W2 WHERE W1.Temperature > W2.Temperature AND TO_DAYS(W1.RecordDate) - TO_DAYS(W2.RecordDate) = 1

262. Trips and Users

解析:查找旅行数据中,每日订单的取消率;条件:1时间期限、2用户没有罚款
考察:联合查询、between、round函数、if函数
步骤:先查数据,然后向其中添加条件
答案:Write a SQL query to find the cancellation rate of requests made by unbanned users between Oct 1, 2013 and Oct 3, 2013. For the above tables, your SQL query should return the following rows with the cancellation rate being rounded to two decimal places.

595. Big Countries

答案:SELECT name, population, area from World where area > 3000000 or population > 25000000

596. Classes More Than 5 Students

答案:SELECT class from (SELECT class,COUNT(DISTINCT student) AS num from courses group by class) AS table1 WHERE num >=5

601. Human Traffic of Stadium

解析:对于体育场人流量数据表,查询连续三天或以上人流量大于100的数据;需要使用聚合
答案:分布书写

SELECT DISTINCT(S.id),date,people from stadium as S,(SELECT s1.id from stadium s1, stadium s2, stadium s3 WHERE  s1.people >= 100 and s2.people >= 100 and s3.people >= 100
and (s1.id = s2.id-1 and s2.id = s3.id -1) order by s1.id) AS t1 where S.id=t1.id or S.id=t1.id+1 or S.id=t1.id +2 

620. Not Boring Movies

解析:对有趣的电影进行评分排序
考点:MOD函数进行奇数判断
答案:SELECT * FROM cinema WHERE MOD(id,2)=1 and description!='boring' order by rating DESC

626. Exchange Seats

解析:交换奇偶位置数据;拼接三个表:奇数表,偶数表,最后的奇数表(总数为奇数时)
考察:联合数据UNION,拼接几个表;
答案:SELECT s1.id+1 AS id,s1.student from seat s1 WHERE MOD(id,2)=1 and s1.id!=(SELECT MAX(id) FROM seat)
UNION
SELECT s2.id-1,s2.student from seat s2 WHERE MOD(id,2)=0
UNION
SELECT s3.id,s3.student from seat s3 WHERE MOD(id,2)=1 and s3.id=(SELECT MAX(id) FROM seat)
order by id

627. Swap Salary

解析:交换性别
考察:使用if或者case,来判断条件进行赋值;不能使用临时表
答案:UPDATE salary SET sex = CASE sex WHEN 'f' THEN 'm' ELSE 'f' END

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,下面是电话号码的字母组合问题的 C++ 代码实现: ``` class Solution { public: vector<string> letterCombinations(string digits) { unordered_map<char, string> mapping = { {'2', "abc"}, {'3', "def"}, {'4', "ghi"}, {'5', "jkl"}, {'6', "mno"}, {'7', "pqrs"}, {'8', "tuv"}, {'9', "wxyz"} }; vector<string> res; if (digits.empty()) { return res; } string combination; backtrack(res, combination, digits, 0, mapping); return res; } void backtrack(vector<string>& res, string& combination, string& digits, int index, unordered_map<char, string>& mapping) { if (index == digits.size()) { res.push_back(combination); return; } for (char c : mapping[digits[index]]) { combination.push_back(c); backtrack(res, combination, digits, index + 1, mapping); combination.pop_back(); } } }; ``` 其中 `letterCombinations` 函数用来生成所有的字母组合,`backtrack` 函数用来进行回溯操作。在 `letterCombinations` 函数中,首先根据数字字符和字母的映射关系创建了一个 `unordered_map` 对象 `mapping`。然后定义了一个空字符串 `combination` 和一个空 vector `res` 来保存最终结果。最后调用了 `backtrack` 函数来生成所有的字母组合。在 `backtrack` 函数中,首先判断是否达到了数字字符串的末尾,如果是,则将当前的 `combination` 字符串保存到 `res` 中。否则,遍历当前数字字符所能表示的所有字母,依次加入到 `combination` 字符串中,然后递归调用 `backtrack` 函数,添加下一个数字字符所能表示的字母。递归完成后,需要将 `combination` 字符串还原到上一个状态,以便进行下一次回溯。最终返回 `res` 数组即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值