2023 哔哩哔哩笔试题 bilibili笔试 0829
笔试时间:2023年8月29日 秋招
第一题
题目
请在UP主视频数据表中,筛选发布视频平均时长大于300秒的up主,按UP主视频平均时长排序,视频iD升序,返回第3行到6行的视频iD。
输入描述
CREATE TABLE udloader_video_record(Video_id BIGINT PRIMARY KEY,uploader_id BIGINTvideo_duration int);
INSERT INTO uoloader _video_record(video_ id,uploader_id,video_ duration)
VALUES(1,101,60),(2,102,600),(3,103,310),(4,101,120),(5,104,3200),(6,102,330),(7,103,290),(8,105,290),(9,101,180),(10,103,320);
输出描述
video_id63710
说明:UP主视频数据表中,发布视频平均时长大于300秒的UP主ID为102、103、104。将这些UP主对应视频数据,按UP主视频平均时长倒序、视频ID升序,取第3行到6行的视频ID为6、3、7、10。
参考题解
先选出平均时长>300的up主与uploader_video_record表进行左连接,条件为tb.uploader_id = uploader_video_record.uploader_id,然后对AVG( video_duration )降序排序,再限制范围即可。
SQL:
SELECT uploader_video_record.video_id FROM ( SELECT uploader_id, AVG( video_duration ) AS `tm` FROM uploader_video_record GROUP BY uploader_id HAVING AVG( video_duration ) > 300 ) AS tb LEFT JOIN uploader_video_record ON tb.uploader_id = uploader_video_record.uploader_id ORDER BY tm DESC, video_id LIMIT 2, 4;
第二题
题目
给定两个字符串s1和s2,返回使两个字符用相等所需删除字符的ASCLL值的最小和。
0<=s1.length.s2.length<=1000
s1和s2由小写英文字母组成.
样例输入
"sea","eat"
样例输出
231
说明
解释:在“sea”中删除“s”并将"s”的值(115)加入总和。
在"eat”中删除“t“并将116 加入总和。
结束时,两个字符串相等,115+116 =231 就是符合条件的很小和。
参考题解
如果选中的两个位置相等,则不需要进行操作,dp[i][j]= dp[I – 1][j – 1] 如果不同,dp[i][j] = min(dp[i - 1][j] + s1[i - 1], dp[i][j - 1] + s2[j - 1])。
class Solution { public: int minimumDeleteSum(string s1, string s2) { int m = s1.size(); int n = s2.size(); vector<vector<int>> dp(m + 1, vector<int>(n + 1)); for (int i = 1; i <= m; ++i) { dp[i][0] = dp[i - 1][0] + s1[i - 1]; } for (int j = 1; j <= n; ++j) { dp[0][j] = dp[0][j - 1] + s2[j - 1]; } for (int i = 1; i <= m; i++) { char c1 = s1[i - 1];
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。