• 20240117更新

    2024年秋招笔试题目,没想到时隔几个月字节跳动游戏业务就要寄了,本文仅供参考,请大佬多多指教

Q1字符串处理

Q2 杯子问题

桌子上有4109+1个饮料杯,这些饮料杯的编号依次为-2*109~210^9,有的盛有饮料,有的是空杯子。现在,牛牛想将一些饮料杯中的饮料倒入某些空杯中,以此来重新排列这些饮料的放置次序。牛牛想让这些饮料最终都盛放在 n 个不同的饮料杯中,并且这 n 个饮料杯编号依次相邻。对于每一次转移,牛牛只能将任何一个饮料杯中的饮料倒入任何一个空的饮料杯中。

求最少的转移次数?

输入描述

第一行输入盛有饮料的杯子数量N,随后N行,输入N个盛有饮料杯子的编号ai,保证没有两个ai是相同的

输出描述

输出饮料的最少的转移次数使得盛有饮料的杯子按照顺序排列

#include <iostream>
#include <vector>
#include <algorithm> using namespace std; int main()
{
long long n;
int num;
cin >> n;
vector<int> cups(n);
for (int i = 0; i < n; i++) {
cin >> num;
cups[num]=1;
}
int left = 0, right = n - 1;
int ans = 0;
while (left <= right) {
if (cups[left] > 0 && cups[right] < 0) {
int min_val = min(abs(cups[left]), abs(cups[right]));
cups[left] -= min_val;
cups[right] += min_val;
ans += min_val;
}
if (cups[left] <= 0) left++;
if (cups[right] >= 0) right--;
}
cout << ans << endl;
return 0;
}

一遍未果,发现理解有误,再拿贪心写一遍

#include <iostream>
#include <vector>
#include <algorithm> using namespace std; int main() {
int n;
cin >> n;
vector<int> cups(n);
for (int i = 0; i < n; i++) {
cin >> cups[i];
}
sort(cups.begin(), cups.end()); // 将饮料杯按编号从小到大排序
int cur = cups[0]; // 当前已盛放饮料的杯子编号
int moves = 0; // 转移次数
for (int i = 1; i < n; i++) {
if (cups[i] != cur + 1) { // 如果当前杯子编号不是上一个杯子编号加1,则需要转移饮料
moves++;
} else {
cur++; // 否则当前杯子已经盛有饮料,更新当前已盛放饮料的杯子编号为当前杯子编号
}
}
cout << moves << endl;
return 0;
}

还是未果lol

Q3食堂打饭

由于某种众所周知的原因,食堂只开放了一个打饭窗口,已知一共会有 n 位学生陆陆续续进到食堂。

牛牛知道这 n 位学生的相关信息,首先将这 n 位学生编号为1,2,..., n .

每位学生的信息格式如下:

l :到达食堂的时间。

s :强壮程度。

a :打饭耗时。

b :用餐耗时。

r ( r > l ):开班会的时间。

学生按照到达食堂的时间进行排队,依次排到打饭窗口队伍的队尾,如果相同时间到达,则强壮程度值更高的排在前面,如果也同样强壮,则编号小排在前面。

当轮到某位学生打饭时,会耗费 a 个单位时间,之后立即轮到排在这位学生后面的学生打饭;

打完饭之后会耗费 b 个单位时间用餐。

当且仅当用完餐时,尚未开始班会,才有可能赶上,即:如果从 t 时刻开始打饭,那么,当且仅当 t + a + b < r 时,才有可能赶上班会,否则,他/她将选择不吃这顿饭,直接去班会地点。

一旦某位学生发现自己按照现有排队情况无法赶上班会,则他/她会直接走出队列,前往班会地点,即使已经轮到他/她打饭,他/她也会直接离开,不会产生任何其它时间消耗。

假设每一位学生都足够聪明,请你判断每位学生是否能够用餐。

本题为多组测试数据,第一行输入一个正整数 T (1≤ T ≤1000),代表测试数据的组

数。

对于每组测试数据,第一行输入一个正整数

n (1≤ n ≤10°),代表到食堂就餐的学生

数量。

接下去 n 行,第 i +1行输入五个正整数 l , s , a , b , r (1≤l, s , a , b ≤10^4;1≤ r ≤10^9;l< r ),表示编号为i的这位学生的相关信息,具体含义如题所述。

题目保证,所有测试数据的 n 之和不会超过10^5

输出描述

对于每组测试数据,一行输出一个长度为 n 的01串,其中,第i个字符为1,则说明编号为i的这位学生能够顺利用餐;否则,说明这位学生来不及用餐。

#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std; const int MAXN = 100005; struct Student {
int id; // 学生编号
int l, s, a, b, r; // 到达时间、强壮程度、打饭时间、用餐时间、开班会时间
int leave_time; // 离开食堂的时间
bool able_to_eat; // 是否能够用餐 bool operator<(const Student& other) const { // 排序规则
if (l != other.l) return l < other.l;
if (s != other.s) return s > other.s;
return id < other.id;
}
} students[MAXN]; int t, n; inline int read() { // 快读
int x = 0, f = 1;
char ch = getchar();
while (ch < '0' || ch > '9') {
if (ch == '-') f = -1;
ch = getchar();
}
while (ch >= '0' && ch <= '9') {
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
} inline void write(int x) { // 快输
if (x < 0) putchar('-'), x = -x;
if (x >= 10) write(x / 10);
putchar(x % 10 + '0');
} int main() {
t = read();
while (t--) {
n = read();
for (int i = 1; i <= n; i++) {
students[i].id = i;
students[i].l = read();
students[i].s = read();
students[i].a = read();
students[i].b = read();
students[i].r = read();
students[i].leave_time = students[i].l + students[i].a + students[i].b; // 初始化离开时间
students[i].able_to_eat = false; // 初始化为不能用餐
}
sort(students + 1, students + 1 + n); int cur_time = students[1].l; // 当前时间初始化为第一个学生到达的时间
int q_head = 1, q_tail = 0; // 使用自己实现的队列,头指针和尾指针分别初始化为 1 和 0
while (q_head <= n) {
cout<<"cur time:"<<cur_time<<" a:"<<students[q_head].a<<" b:"<<students[q_head].b<<endl;
if (cur_time + students[q_head].a + students[q_head].b < students[q_head].r) { // 如果当前学生能够赶上班会
cur_time += students[q_head].a; // 更新当前时间
students[q_head].able_to_eat = true; // 标记为能够用餐
// cout<<q_head<<" is true"<<endl;
q_head++; // 处理下一个学生
continue;
}
// cout<<"q_head:"<<q_head<<"tail:"<<q_tail<<endl;
while (q_tail < n && cur_time >= students[q_tail + 1].leave_time) q_tail++; // 删除已经不能用餐的学生
if (q_head <= q_tail) { // 队列非空
// cout<<1<<" "<<cur_time<<endl;
cur_time = max(students[q_tail + 1].l, cur_time); // 更新当前时间为队列中下一个学生到达的时间
q_tail++; // 处理队首学生
} else { // 队列
// cout<<2<<" q_head:"<<q_head<<endl;
cur_time = max(students[q_head].l,cur_time); // 更新当前时间为队首学生到达的时间
}
q_head++;
} for (int i = 1; i <= n; i++) {
for(int j=1;j<=n;j++)
{
if(students[j].id==i){
write(students[j].able_to_eat); // 输出能否用餐的结果
continue;
}
}
}
puts(""); // 换行
} return 0;
}

Q4方格问题

由 N 个1x1单元格组成的1 x N 的条形格,请你找到最大的 K ,使他满足将条形格分为一个1 x K 的区域,两个1x K -1的区域,三个1x K -2的区域....... K 个1 x 1的区域。需要注意的是,这些区域不可接触。

#include <iostream>
using namespace std; int main() {
int n;
cin >> n; int k = 1; // 初始化为1
while (k * (k + 3) / 2 <= n) { // 计算条件,每次加1测试
++k;
} cout << k - 1 << endl; // 输出结果 return 0;
}
#include <iostream>
using namespace std; bool check(int n, int k) {
int i = 1, sum = 0;
while (n > 0) {
if (n <= k) return true; // 当前区域长度不超过k,可以分为一个区域
sum += k + i; // 累加当前区域的单元格数量
n -= k + i; // 计算下一个区域的起始位置
i++; // 下一个区域比当前区域短1个单位长度
}
return false;
} int main() {
int n;
cin >> n; int ans = 0;
for (int k = 1; k <= n; k++) {
if (check(n, k)) ans = k;
else break;
}
cout << ans << endl;
return 0;
}

2024秋招字节跳动朝夕光年UE4客户端开发实习生岗笔试题目的更多相关文章

  1. 工作三年终于社招进字节跳动!字节跳动,阿里,腾讯Java岗面试经验汇总

    前言 我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿到了字节跳动的o ...

  2. 2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案

    2021字节跳动校招秋招算法面试真题解题报告--leetcode19 删除链表的倒数第 n 个结点,内含7种语言答案 1.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. ...

  3. 朋友的一年工作经验跳槽字节跳动社招经历分享(已拿offer)

    虽然已经临近年末,但是还是萌生要看新机会的想法,主要的原因是觉得在目前的岗位上技术增长遇到的瓶颈,因此想去做一些更有挑战的工作.因为仍然准备继续在深圳工作,因此选定了三家公司,腾讯.字节跳动和 sho ...

  4. 【北京/上海/南京】【部门直推】【可查询】【实习&社招】字节跳动数据平台前端内推

    [北京/上海/南京][部门直推][可查询][实习&社招]字节跳动数据平台前端内推 重要信息,写在前面  [投递邮箱]chengxinsong@bytedance.com [微信扫码] 2019 ...

  5. 【字节校招】【实习】【内推】字节跳动春招(校招或实习均可)以及日常实习内推ing

    本人是年前刚刚入职抖音的应届生,职业认证还未来的级更改,但是这些都不重要.重要的是我们不能错过优秀的你~ 字节跳动的相关福利我就不介绍了,技术实习生是400/天,房补是1500/月,三餐免费,下午茶, ...

  6. Offer经验分享 - 蚂蚁金服、字节跳动、PDD、百度、华为、Paypal - Java社招面经

    年中的时候因为换工作的缘故,陆续参加了华为.蚂蚁.字节跳动.PDD.百度.Paypal的社招面试,除了字节跳动流程较长,我主动结束面试以外,其他的都顺利拿到了Offer. 最近时间稍微宽裕点了,写个面 ...

  7. 字节跳动Android春招,三轮面试,夺命连环问,心态崩了

    我是春招参加字节面试的,现在已经入职俩月啦,当时没有及时记录下来拖到现在...我尽量回忆当时的内容希望能帮到大家. 投的部门是深圳字节影像,不得不说这个部门的效率,上午投下午就接到hr的电话约面试时间 ...

  8. Java秋招面经大合集

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  9. 我的秋招经验分享(已拿BAT头条网易滴滴)

    微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...

  10. ​​ ​​我的Java秋招面经大合集(包含BAT头条网易等公司)

    ​ 微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经 ...

随机推荐

  1. docker 修改运行容器环境变量,如何修改容器中的环境变量env使长期有效

    @ 目录 前言 第一步:查看Docker Root目录 第二步:查到容器的长id(container id) 第三步:停止容器 第四步:编辑修改环境变量env 第五步:重载服务的配置文件 第六步:重启 ...

  2. uni-app前端图表组件库,折线图横屏android失败的解决办法

    网址:https://www.ucharts.cn/v2/#/demo/index,需要登录,微信就可以 我在使用折现图时,业务需要把曲线图在点击全屏时横屏全屏显示.就做个全屏页面,点击后,把opti ...

  3. Jenkins 项目构建平台

    引言 Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,主要用于持续.自动的构建/测试软件项目.监控外部任务的运行.Jenkins 用 Java 语言编写,可在 Tomcat 等流行 ...

  4. Vue cli之路由router

    一.安装路由 Vue-router用于提供给vue项目在开发中用于绑定url和组件页面的关系的核心插件. 默认情况下,vue没有提供路由的功能,所以我们使用vue-router,并需要在项目根目录. ...

  5. 微软的文本转语音服务Microsoft.CognitiveServices.Speech

    微软的Edge 浏览器里的大声朗读里-"晓晓" 很接近自然人,比起其它平台的强很多. 在AZURE 可免费体验,每月限额50万字,每个语音转换不超过10分钟长度. C# 调用: u ...

  6. C#开发的股票盯盘小工具——摸鱼助手,附源码

    写了个盯盘小工具,最近发现很多炒股的小伙伴,上班期间看手机频繁是不是影响不好?电脑上打开交易软件,那影响是不是更不好?所以我就写了个小工具,给大家"摸鱼"用.虽然是摸鱼用,但是平常 ...

  7. REACT列表过度

    <TransitionGroup> <CSSTransition> <li>aaaa</li> </CSSTransition> </ ...

  8. CF1753

    CF1753 成功因为虚拟机炸了,重新写一遍此文. 都是没有保存的错. A. Make Nonzero Sum 由于 Note that it is not required to minimize ...

  9. ABC330

    D 记录每一行,每一列有多少个 o,然后统计答案即可. code E 想到 \(mex^{i \le n}_{i = 1} a_i \le n\) 这整个题就可做了(赛时因为没想到这个,痛失 \(47 ...

  10. 极限科技旗下软件产品 INFINI Easysearch 通过统信 UOS 认证

    近日,极限数据 (北京) 科技有限公司(以下简称:极限科技)旗下的软件 INFINI Easysearch 搜索引擎软件 V1.0 通过统信 UOS 服务器操作系统 V20 认证. 此次兼容适配基于统 ...