字节8.21客户端笔试题解

第一题:

贪心,摩天轮转动一次相当于可以多上4个人,题目要求转动尽可能少,那么自然想到尽可能的让互为朋友的4个人上去同一个摩天轮。

由于必须至少两个朋友一起上同一个摩天轮,如果余下了1个,那么就不能上4个,只能上3个,剩下2个人可以和其他2个人拼;如果余下了2个,那么也可以和其他2个人拼;如果剩3个,那么就拼不了了。

代码(这题代码忘记存了,实现的话就取一下模,然后记录剩下了多少个两人组就好了)

第二题:

问有哪些点到达不了终点,其实就是总点数减去能到达终点的点数。直接从终点出发进行BFS,按照题目模拟即可。

代码(C++):

#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define fi first
#define se second
const int maxn = 1e+5;
vector<string> mp;
int dir[4][2] = {1,0,0,1,-1,0,0,-1};
char op[4] = {'U','L','D','R'};
map<int,map<int,int> > vis;
int main()
{
    ios::sync_with_stdio(0);
    int n,m;
    cin>>n>>m;
    string s;
    for(int i = 0; i < n; i++)
    {
        cin>>s;
        mp.push_back(s);
    }
    int ex = -1,ey = -1;
    queue<pii> q;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
        {
            if(mp[i][j] == 'O')
                ex = i,ey = j;
        }
    q.push({ex,ey});
    vis[ex][ey] = 1;
    int ans = n*m;
    while(!q.empty())
    {
        auto t = q.front();
        q.pop();
        ans--;
        for(int i = 0; i < 4; i++)
        {
            int x = t.fi+dir[i][0],y = t.se+dir[i][1];
            if(x>=0&&y>=0&&x<n&&y<m&&!vis[x][y]&&(mp[x][y]==op[i]||mp[x][y]=='.'))
            {
                vis[x][y] = 1;
                q.push({x,y});
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}

第三题:

题目有点难懂,其实把一个花括号当成一个整体,那么这题就是一个简单的小正则匹配,记忆化搜索就好了。

代码(C++)(这里把花括号直接换成一个题目中没有的字符@,简化逻辑):

#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define fi first
#define se second
const int maxn = 105;
string s,ns = "";
int n,m,ok = 0,must = 0;
string p;
bool vis[105][105];
//p1->s,p2->p
void dfs(int p1,int p2,int must)
{
    if(vis[p1][p2])
        return;
//    cout<<p1<<" "<<p2<<endl;
    vis[p1][p2] = 1;
    if(p2 >= m && !must)
    {
        ok = 1;
        return;
    }
    if(ok)
        return;
    if(p1 >= n)
        return;
    if(p2 >= m)
        return;
    if(ns[p1] == '@')
    {
        dfs(p1+1,p2,must);
        dfs(p1,p2+1,must);
    }
    else if(ns[p1] == p[p2])
        dfs(p1+1,p2+1,must-1);
}
int main()
{
    ios::sync_with_stdio(0);
    int T;
    cin>>T;
    cin>>s;
    n = s.length();
    int flg = 0,tt = 0;
    for(int i = 0; i < n; i++)
    {
        if(s[i] == '{')
        {
            flg = 1;
            ns += '@';
            tt++;
            continue;
        }
        else if(s[i] == '}')
        {
            flg = 0;
            continue;
        }
        if(!flg)
            ns += s[i];
    }
//    cout<<ns<<endl;
    must = ns.length()-tt;
    n = ns.length();
//    cout<<ns<<endl;
    while(T--)
    {
        cin>>p;
        m = p.length();
        memset(vis,0,sizeof(vis));
        ok = 0;
        dfs(0,0,must);
        puts(ok?"True":"False");    
    }
    return 0;
}

第四题:

思维题,不难发现只有把1移动到字符串的头部或者尾部的时候(头部/尾部一开始不为1),答案才会减少,移动到头部相当于少了1,尾部相当于少了10,那么自然优先移动到尾部。

代码(C++):

#include <bits/stdc++.h>
using namespace std;
#define pii pair<int,int>
#define fi first
#define se second
const int maxn = 1e+5;
int main()
{
    ios::sync_with_stdio(0);
    int T;
    cin>>T;
    while(T--)
    {
        int n,k;
        cin>>n>>k;
        string s;
        cin>>s;
        int ans = 0,fi = -1,la = -1;
        for(int i = 0; i < n-1; i++)
            ans += (s[i]-'0')*10+s[i+1]-'0';
        for(int i = 0; i < n; i++)
        {
            if(fi == -1 && s[i] == '1')
                fi = i;
            if(s[i] == '1')
                la = i;
        }
        if(la != -1 && la != n-1 && n-1-la <= k)
        {
            k -= n-1-la;
            ans -= 10;
        }
        if(fi != -1 && fi != 0 && fi <= k)
            ans--;
        cout<<ans<<'\n';
    }
    return 0;
}
#字节跳动##字节笔试##题解##字节23秋招笔试太难了吧##原来字节劝退的只是我,罢了罢了#
全部评论
想问下大佬,第二题那个mp【x】【y】==op【i】,满足这个条件为啥可以把元素塞入?
1 回复 分享
发布于 2022-08-21 23:27 广东
1、2、4都A了,第3题一直卡在90% 最后20秒意识到问题在哪 没来得及改(吐血)
1 回复 分享
发布于 2022-08-21 21:04 北京
大佬好强啊
1 回复 分享
发布于 2022-08-21 21:02 浙江
在 vx 公众号 度小满 招聘 可以投递 也可以在官网投递 内推码 NTAM8vC  随时查看进度(可私信可留言)
点赞 回复 分享
发布于 2022-08-23 00:01 北京
第四题是后端第一题,一模一样的思路  但是只过了22%,搞好久没看明白到底哪里有问题,心态爆炸
点赞 回复 分享
发布于 2022-08-22 14:46 上海
第四题应该是一个二维的dp吧分别是交换次数和长度
点赞 回复 分享
发布于 2022-08-21 21:43 广东
为什么你们的第四题是我的第一题,心态炸裂
点赞 回复 分享
发布于 2022-08-21 21:30 北京
大佬也太强了
点赞 回复 分享
发布于 2022-08-21 21:25 四川
你这第四题有bug吧? 2 1 10 正确输出1 你的输出0
点赞 回复 分享
发布于 2022-08-21 21:14 上海
大佬好强
点赞 回复 分享
发布于 2022-08-21 21:08 美国
大佬这么强
点赞 回复 分享
发布于 2022-08-21 21:03 河南

相关推荐

【客户端校招劝退帖:不是劝退努力,是劝退“想当然”】最近刷牛客看到好多同学卷客户端开发,作为过来人说几句掏心窝的话——不是说这行不好,是它可能和你想象的“香”不太一样。1.&nbsp;岗位真的不多。大厂HC一年比一年少,中小厂要么不招校招,要么要求“全栈潜力”(说白了就是客户端+前端+后端都得懂点)。我秋招投了30多家,笔试过了10家,面试只面了5家,最后拿到2个offer,其中1个还是创业公司的“多面手岗”。2.&nbsp;技能栈卷到离谱。你以为会Android&nbsp;Studio/Flutter就够了?面试官会问你Java底层、Kotlin协程原理、跨平台框架对比(Flutter/RN/Weex),甚至还会揪着你项目里的网络请求、内存优化、性能监控问到底。更绝的是,现在很多岗位要求懂点后端接口设计,因为“客户端不能只做UI搬运工”。3.&nbsp;职业天花板肉眼可见。刚入职可能觉得写页面、调接口挺新鲜,但干两年就会发现,业务迭代快的公司,你可能一直在做“换肤”“加按钮”的重复工作;想往深了钻,要么转架构(名额极少),要么被迫学跨平台、学后端,慢慢偏离纯客户端赛道。身边不少前辈,30+要么转管理,要么转行了。4.&nbsp;性价比真的不高。同样的努力程度,前端/后端校招薪资普遍比客户端高10%-20%,岗位还多。我同期学后端的室友,秋招拿的offer薪资比我高了快2k,而且他们可选的大厂更多,不用像我们一样“赌小厂不裁员”。当然,如果你是真的热爱客户端,比如痴迷原生动画、性能优化,能接受“用更多努力换更少机会”,那完全可以冲——毕竟热爱能抗住很多现实压力。但如果只是听说“客户端简单好入门”“稳定”,那真的建议再想想,别把秋招宝贵的时间浪费在错误的赛道上。最后说句大实话:校招选方向,尽量选“需求大、上限高、薪资体面”的,别被“兴趣”绑架,除非你确定自己能为这份兴趣熬很多年。(个人经历,仅供参考,杠就是你对)
投递字节跳动等公司10个岗位
点赞 评论 收藏
分享
08-15 17:27
已编辑
华南师范大学 C++
2025/8/14&nbsp;字节客户端一面:自我介绍项目10分钟在学习/项目中,最有挑战的事情是什么操作系统1.进程和线程的理解2.进程间的通信:管道,消息队列,信号/信号量计网:3.http和https的优缺点4.https建立连接的流程:TCP连接,最后发送密钥5.密钥是从哪里获取的6.数据传输时用的什么加密方式:对称加密7.为什么不用非对称加密:资源消耗,密钥发送安全性,面试官补充时效性?数据库:8.数据库索引有什么用,什么时候建立索引,建立在什么字段上,什么时候适用什么时候不适用?C++:9.C++和其他语言在设计上有什么区别?10.C++中没有interface字段,c++用什么来定义接口:应回答抽象类11.C++抽象类和普通类的区别12.虚函数和纯虚函数有什么区别在c++中,现有类A和类B,在A和B中声明了一个完全相同的虚函数,现有一个类c,c继承A和B,那么在c中能否调用A和B声明的哪个虚函数,如何确定调用的是A还是B的虚函数:(1)如果C没有覆盖该虚函数,直接调用会编译失败(歧义错误)(2)通过作用域解析运算符::显式指定调用哪个基类的版本(3)若C覆盖了该函数,调用c.func()会执行C的版本,但仍可通过作用域调用基类版本(4)通过基类指针调用时,行为由指针类型决定13.Std::move和普通的赋值语句有什么区别14.String&nbsp;A=“asdasd”&nbsp;string&nbsp;B=move(A)&nbsp;之后还可以访问A吗15.什么场景下会用到shared_ptr16.shared_ptr的循环引用怎么解决17.线程安全的问题会出现在什么场景下18.乐观锁和悲观锁:一个在循环检测,一个不循环检测19.除了c++还会用其他语言么20.平时会用AI去帮忙写代码么手撕,二叉树,判断是否存在一条路径,所有节点的和等于目标值,从根节点出发求求给个机会!&nbsp;8.15已挂
查看25道真题和解析
点赞 评论 收藏
分享
评论
27
56
分享

创作者周榜

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