牛客算法竞赛入门课第二节习题Part2(FBI树~新建 Microsoft Office Word 文档)
FBI树
题意:
输出FBI树的后序遍历序列。
思路:
二叉树一般就是分左右两个子树,然后递归下去,在这个过程中判断一下字母就好了。
题目中要求的是后序遍历,所以对于一个节点,是先输出左子树再输出右子树,最后输出该节点。
补充一下:前序遍历就是对于一个节点,是先输出该节点再输出左子树,最后输出右子树。中序遍历就是对于一个节点,是先输出左子树再输出该节点,最后输出右子树。
代码:
指纹锁
题意:
当指纹的数值差<=k时,可以看作是相同的指纹。
有三个操作,添加删除和询问。
请对每一个询问操作给出答案。
思路:
用一个set维护就好,但是之前一直不知道怎么维护指纹的数值差<=k的可以看作是相同的指纹,直到看到巨巨题解hhhh.
我们可以用运算符重载来自定义set的排序方式,当两个数之间的差值为k时直接返回flase。正好面对刚学完运算符重载。
新建 Microsoft Office Word 文档
题意:
一看就是cls的题啊哈哈
模拟新建文档和删除文档的操作。
思路:
用set反向模拟一下就好了。
假设n个操作都是添加,那么最多会有n个文档。
我们可以先把n个编号存入set里,对于每一个操作,如果是新建文档的话,输出set里的第一个编号,然后删除即可;如果是删除文档的话,就看set集合里是不是有这个编号,如果没有这个编号,说明这个文档已经被使用过了,删除成功;否则,没用过这个编号,删除失败。
代码: