【编程题】【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)))

四、并查集

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

质数取数组再用并查集

 

 

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

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

(欢迎转发到朋友圈~)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值