字节跳动2019校园招聘研发岗位第二次笔试-2018.08.25

本文主要是介绍字节跳动2019校园招聘研发岗位第二次笔试-2018.08.25,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文中没给代码的后期补上,有AC的同学欢迎评论发一下代码
牛客讨论帖 https://www.nowcoder.com/discuss/98663?type=2&order=0&pos=5&page=1
1-1
1-2
1-3
1-4.png
这道题考察的是并查集(或者DFS),看代码前请先了解一下并查集
并查集解释
上面那个链接的博客里面代码有点错误,错误之处在评论中有指出

并查集思路:

#include <stdio.h>
#define N 100020
int friends[N];//每个人所属的连通分量,即构成朋友树时每个人的父节点
int rank[N];//连通分量的权值,即朋友树的大小
int res;
void init(int n)//初始化initialization
{for(int i=0;i<n;i++){friends[i]=i;rank[i]=0;}
}int findRoot(int x)//寻找x所属的朋友树的根节点
{//一直向上遍历寻找根节点while(x != friends[x])x = friends[x];return x;
}void connect(int x,int y)
{int xRoot = findRoot(x);int yRoot = findRoot(y);if(xRoot == yRoot)return ;//判断树高,小树并在大树下if(rank[xRoot] < rank[yRoot])friends[xRoot]=yRoot;else{friends[yRoot] = xRoot;if(rank[xRoot]==rank[yRoot])//两树高相等,合并后树高+1rank[xRoot]++;}--res;
}
int main()
{int n;init(N);//初始化scanf("%d",&n);res = n;for(int i=1;i<=n;i++){int t;while(~scanf("%d",&t)){if(t == 0)break;connect(i,t);}}printf("%d",res);
/*
10
0
5 3 0
8 4 0
9 0
9 0
3 0
0
7 9 0
0
9 7 0
*/return 0;
}

DFS思路:

#include <iostream>
#include <vector>
using namespace std;
int n;
int res;
void dfs(vector<vector<int>>& friends, int x, int y,vector<vector<bool>>& mark){if(x >=  friends.size() || y >= friends[0].size() || x < 0 || y < 0)return;if(mark[x][y] == true)return;if(friends[x][y] == 0){mark[x][y] = true;return;}// 对于已经搜索过的点要进行标记mark[x][y] = true;res--;for(int j=1; j<n; j++){dfs(friends, x, j, mark);}}
void minM(vector<vector<int>>& friends) {if(friends.empty())return;res = n;vector<vector<bool>> vecMark(friends.size(),vector<bool>(friends[0].size(),false));// 定义标记数组//开始搜索for(int i = 1;i < friends.size();i++){for(int j = 1;j < friends[0].size();j++){if(vecMark[i][j] == true)continue;if(friends[i][j] == 0){vecMark[i][j] = true;continue;}dfs(friends, i, j, vecMark);}}cout << num << endl;
}
int main()
{cin >> n;vector<vector<int>> friends(n+1, vector<int>(n+1,0));int temp = 0;for(int i=1; i<=n; i++){int j = 1;while(cin>>temp){if(temp == 0)break;friends[i][j] = temp;j++;}}minM(friends);return 0;
}

2-1.png
2-2.png
2-3.png
3-1.png
3-2.png
3-3.png
3-4.png
4-1.png
4-2.png
4-3.png
思路:
本来是在全局序列之中求最长上升子序列,但是因为是重复的序列,
其实只需在第一个序列之中求最长上升序列,并且其中的最大元素在后面的每个序列之中一定存在,最后加上b-1(b为重复序列个数)
ans[] 存储给定序列
tmp[i] 表示从第0位到第i位的最长子序列个数

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{int a,b;scanf("%d%d", &a, &b);vector<int> ans(a, 0),tmp(a,1);for (int i = 0;i<a;i++){scanf("%d", &ans[i]);}for (int i = 1;i<a;i++){for (int j = 0;j<i;j++){if (ans[i]>=ans[j]){tmp[i] = max(tmp[i], tmp[j] + 1);}}}cout << *max_element(tmp.begin(), tmp.end())+b-1;return 0;
}

5-1.png
5-2.png
5-3.png

这篇关于字节跳动2019校园招聘研发岗位第二次笔试-2018.08.25的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/249142

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【秋招笔试】9.07米哈游秋招改编题-三语言题解

🍭 大家好这里是 春秋招笔试突围,一起备战大厂笔试 💻 ACM金牌团队🏅️ | 多次AK大厂笔试 | 大厂实习经历 ✨ 本系列打算持续跟新 春秋招笔试题 👏 感谢大家的订阅➕ 和 喜欢💗 和 手里的小花花🌸 ✨ 笔试合集传送们 -> 🧷春秋招笔试合集 🍒 本专栏已收集 100+ 套笔试题,笔试真题 会在第一时间跟新 🍄 题面描述等均已改编,如果和你笔试题看到的题面描述

【JavaScript】LeetCode:21-25

文章目录 21 最大子数组和22 合并区间23 轮转数组24 除自身以外数组的乘积25 缺失的第一个正数 21 最大子数组和 贪心 / 动态规划贪心:连续和(count)< 0时,放弃当前起点的连续和,将下一个数作为新起点,这里提供使用贪心算法解决本题的代码。动态规划:dp[i]:以nums[i]为结尾的最长连续子序列(子数组)和。 dp[i] = max(dp[i - 1]

毕业前第二次面试的感慨

距面试已经过去了有几天了,我现在想起来都有说多的恨感慨。 我一直都是想找刚刚起步的企业,因为这能让我学到更多的东西,然而正好有一家企业是刚起步的,而且他还有自己的产品专利,可以说这是一家,即是创业又是刚起步的公司,这家公司回复了我投给他的简历,这家企业想进一步了解我的情况,因为简历上我符合这家企业的基本要求,所以要进一步了解。 虽然面试的过程中,他给我的面试题,我做得并不是很理想,

未雨绸缪:环保专包二级资质续期工程师招聘时间策略

对于环保企业而言,在二级资质续期前启动工程师招聘的时间规划至关重要。考虑到招聘流程的复杂性、企业内部需求的变化以及政策标准的更新,建议环保企业在二级资质续期前至少提前6至12个月启动工程师招聘工作。这个时间规划可以细化为以下几个阶段: 一、前期准备阶段(提前6-12个月) 政策与标准研究: 深入研究国家和地方关于环保二级资质续期的最新政策、法规和标准,了解对工程师的具体要求。评估政策变化可

两道笔试题

“char a='\72'”是什么意思? 这么理解:\为转义字符,\072转义为一个八进制数072,也就是十进制数的58买一送一,将转义字符对照表也一并贴给你吧:转义字符 意义 ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT

JVM - 字节码文件详解

文章目录 目录 文章目录 1. 无关性基石 2. Class类文件结构 magic- 魔数 主副版本号 常量池 访问标志 类索引,父类索引与接口索引集合 字段 方法 属性 3. 类加载机制 类的生命周期 类加载过程 加载 连接 验证 准备 解析 初始化 4. 类加载器 类与类加载器 类加载器的分类 启动类加载器  扩展类加载器 应用程序类加