【编程题】【2019字节跳动技术类笔试】

一、并查集

题目:豆油瓶是直系和间接朋友组成的群体,也可以自成一个豆油瓶,输入用户之间的互动次数矩阵,大于等于3即为是朋友,求豆油瓶的个数

思路:初始化每个用户的父节点为自己,nn遍历每个用户对ab,如果是朋友且父节点不同,则把a的最上父节点的父节点更新为b的最上父节点,使他们拥有相同的最上父节点;构造结束后,遍历每个用户,若用户的最上父节点是自己,则朋友圈数加一;

leetcode547

并查集其他题目:684 685

二、dp或卡特兰数

题目:花园入口划分

思路:leetcode96 

ATTENTION:若采用卡特兰数需要注意,n为奇数时输出0,n为偶数才输出卡特兰数(我个蠢货忘了判断这个。。搞了50%)

C = 1
for i in range(n/2):
    C = C * 2 * (2 * i + 1) / (i + 2) 
print(C)

三、模拟题

题目:模拟2048,用户有动作1234代表上下左右,给出4X4的矩阵,模拟用户动作后的矩阵

思路:对于左操作,遍历矩阵每一行,每一行使用栈进行处理,非0元素不入栈,若当前元素与栈顶元素相同则pop后入栈当前元素的二倍,然后在栈后补0维持4的长度,处理后放入新矩阵。右操作同理。上下操作只需先将矩阵转置处理后再次转置即可。

eg: 左移0228 -> 栈48 -> 栈4800

ATTENTION:

1) 0224左移用上述方法会变为8000而实际答案为4400,处理方法:加标志位,若栈顶元素是处理后的,下一位直接入栈;

2) 2804左移用上述方法会变为2840而实际答案为2804,处理方法:对于空stack的非0元素不入栈;

Note:转置代码:

mp = list(map(list,zip(*mp)))

四、并查集

枚举素公共因子然后并查集并一下

质数取数组再用并查集

 

 

本文来自程序媛驿站,未经授权不得转载.

如有需要请公众号后台联系

(欢迎转发到朋友圈~)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章