2023 哔哩哔哩笔试题 bilibili笔试 0908

笔试时间:2023年9月9日 秋招

第一题

题目:找到有评级的主播

现给到一张主播收益表,包含主播ID anchor_id、直播场次ID live_id、场次对应收益字段 live_revenue。主播总收益>100可以参与评级,总收益前三对应主播分别获得黄金、白银、青铜评级,如存在多个主播总收益相等,则并列相同评级,不占用下一个评级。请按要求写出SQL语句,筛选黄金、白银、青铜评级主播ID,结果按主播ID倒序排列

样例输入

CREATE TABLE anchor_live_revenue_record (live_id BIGINT PRIMARY KEY COMMENT '直播场次ID'
anchor_id BIGINT NOT NULLCOMMENT'主播ID'
live_revenue INT NOT NULL COMMENT'直播场次对应收益'
);

INSERT INTO
anchor_live_revenue record(live_id,anchor_id,live_revenue) VALUES
(1,101,50),
(2,102,10),
(3,102,100),
(4,103,105),
(5,103,25),
(6,104,600)

样例输出

anchor_id

104

103

102

参考题解

SQL:

select anchor_id
from
(select anchor_id, DENSE_RANK() OVER(ORDER BY sum(live_revenue) DESC) as r
from anchor_live_revenue_record
group by anchor_id
having sum(live_revenue) > 100) as a
where r <= 3
order by anchor_id desc

第二题

题目:求不间断子数组的数量

给你一个下标从0开始的整数数组nums。nums 的-个子数组如果满足以下条件,那么它是 不间断的:i,i+1,...,j 表示子数组中的下标。对于所有满足i<=i1,i2 <=j的下标对,都有0<=|nums[i1]- nums[i2]| <= 2;请你返回 不间断子数组的总数目。子数组是一个数组中一段连续非空的元素序列。

1 <= nums.length <= 10^4

样例输入

[3,2,1]

样例输出

6

说明

大小为1的不间断子数组: [3][2][1]。

大小为 2的不间断子数组:[3,2],[2,1]

大小为3的不间断子数组:[3,2,1]。

不间断子数组的总数目为3+2+1=6

参考题解

采用一个set保存遍历的元素,如果出现最大元素-最小元素大于2的情况,那么就收缩左边界;同时累加 以i为右端点的数组数目;

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.ArrayList;
import java.util.List;
import java.util.TreeSet;

class Solution {
    public int subArrNum(List<Integer> arr) {
        int n = arr.size();
        int ans = 0;
        TreeSet<Integer> st = new TreeSet<>();
        for (int i = 0, l = 0; i < n; ++i) {
            st.add(arr.get(i));
            while (st.last() - st.first() > 2) {
                st.remove(arr.get(l));
  

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2023 秋招笔试题汇总解析 文章被收录于专栏

2023秋招各大笔试题汇总,c++,java,python多种语言分析,解答。

全部评论

相关推荐

仁者伍敌:牛子这些人还会点一个自动回复,boss都不带回复的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务