华为笔试20220907

1 猪的亲戚关系

农场里有n条猪,编号为0..n-1

给定m个列表,首元素是其余所有元素的母亲,每个元素只有一个母亲

给定两个编号x,y,求x,y的距离(如不联通输出-1,相同为0)

数据范围:

0<n<1e9

0<m<1e4

样例:

n = 10

a[0] = 0,1,2
表示0是1,2的母亲
a[1] = 1,3,4
表示1是3,4的母亲

求2,4的距离

存在路径2-0-1-4 答案为3

solution:

事实上就是找一条x到y的路径,一个简单的dfs就可以了

需要注意,因为n的范围很大,需要用哈希表存储边

但是我只过了90%,也不知道是为什么

n,m = map(int,input().split())
g = defaultdict(list)
for _ in range(m):
    nums = list(map(int,input().split()))
    x = nums[0]
    for y in nums[1:]:
        g[x].append(y)
        g[y].append(x)
m1,m2 = map(int,input().split())
def dfs(x,fa,res):
    for y in g[x]:
        if y != fa:
            if y == m2:
                return res+1
            tmp = dfs(y,x,res+1)
            if tmp != -1:
                return tmp
    return -1
print(dfs(m1,-1,0))

2 求士兵到敌人的最短耗时

给定一个m x n的二维表格,其实有一个S表示士兵,一个E表示敌人

其余的要么是B,表示街道可以通行,要么是X,表示禁止通行

士兵可以上下左右移动,移动一次耗时1

另外士兵转向时,额外耗时1

求士兵找到敌人的最短耗时,如找不到输出-1

数据范围:

1 < m,n < 1000

这题用bfs应该就可以做了,但是不知道为什么我脑子抽了用堆

但是我感觉堆应该也能实现啊,也有可能是我存储的变量太多

我的节点存了 (耗时,横坐标,纵坐标,之前的x方向,之前的y方向) 5个变量

只过了25%,其余超时了

事后想想,应该直接bfs的,然后后面两个方向可以合并成一个,横纵坐标也可以合并成一个 但是不知道超时的原因到底是什么 如今也没有再次测试的机会了

3 一直在前面两题,没看

总结

这是第一次做华子的笔试,感觉难度还行,就是网页不太好用

python需要缩进,特别难受,删除一个tab要按四下退格,真的难受

#华为##校招##笔试##华为笔试好难啊,自闭了##23届秋招笔面经#
全部评论
你好,我想知道一下第一题你举的这个例子的具体的样子,就是原题里的,应该是 10 记录行数 0 1 2 1 3 4 缺少 2 4
点赞 回复 分享
发布于 2022-09-07 22:42 江苏
第二题我也考虑BFS,但后续考虑最短,还是用优先队列来BFS,才过了36
点赞 回复 分享
发布于 2022-09-08 10:26 山东
你好,第一题是如何一行一行的保存的?我试了很多种方法都不能按行存取数据。
点赞 回复 分享
发布于 2022-09-07 23:42 浙江
第一题应该是考察的LCA 两个节点到公共祖先的距离的和是答案
2 回复 分享
发布于 2022-09-08 23:32 北京
第二题BFS得注意到终点不能直接返回,不能保证最小,我是用 只有更新过距离的坐标才能继续更新其他点,加入队列,直到没有点可以再更新。方向问题只要用一个数组pr[N]存0,1,2,3表示4个方向,idx++存,cnt++配合队列使用就能知道当前队头元素保存的方向是上面。 第三题比第二题简单,BFS就行了,路径需要从尾到头递归,每次从上下左右四个方向找当前距离-1即可。 练习了一下。
2 回复 分享
发布于 2022-09-09 20:02 江苏
第一题的输入都是顺序吗,会出现0 2 1这样的顺序吗?
1 回复 分享
发布于 2022-09-07 22:00 广东
第一题构造树找最近公共节点会快点吗,每个节点有val,小猪集合和count,用self.flag记录找到的小猪个数(012),后序遍历每步更新母猪count=小猪count求和加flag,如果flag等于2就返回母猪.count
1 回复 分享
发布于 2022-09-09 00:58 北京
可以求求第一题代码吗
点赞 回复 分享
发布于 2022-09-07 22:50 湖北
hi~同学,秋招遇“寒气”,牛客送温暖啦!23届秋招笔面经有奖征集中,参与就得牛客会员7天免费体验,最高赢300元京东卡!戳我去看>>>https://www.nowcoder.com/link/zhengjipinglun
点赞 回复 分享
发布于 2022-09-08 12:34 北京
第一题有环吗?
点赞 回复 分享
发布于 2022-09-12 00:10 广东
想知道第一题如果用Java写的话,该怎么存储关系的结构,直接建邻接矩阵太大了会OOM,想了想好像也没用过其他的方式来存储。
点赞 回复 分享
发布于 2022-09-17 17:58 香港

相关推荐

10-23 20:57
南京大学 C++
联州 嵌入式岗位 27k
点赞 评论 收藏
分享
14 75 评论
分享
牛客网
牛客企业服务