TME 8/23笔试AK思路(Java)

第一题:每次合并去除一个节点,遍历统计连续的0或非0即可,比如连着三个非0,计数就加2

第二题:遍历一遍找到最大id,然后后序遍历建树,如果节点不存在且id在范围内就创建新节点

第三题:在两个数中间按顺序插入不会影响结果,比如1,6里面插入123456,结果不变,所以只需要找到数字序列的最大值和最小值,以序列最小值为3举例,有两种情况,第一是将小于3的值全部放到边界,第二是将小于3的值放到两个3之间(本身有个最小值,然后再插入一个最小值),取其中结果最小的情况

第四题:第一步先按照题目样例建树,比如101就是从根出发的右节点的左节点的右节点,只要遇到不存在的节点就新建,然后第二步分配叶子节点的值,这里可以直接排序,由于较小的值放到树的底部,所以长度大的值小,如果长度一样,则左边的小(好像是,反正按照题意写比较条件),直接用String的compare方法就行,然后按顺序填入,最后后序遍历,左右子节点的值相加得到中间节点的值

前三题一开始各看了一分钟甚至都没什么思路,尤其是第一题可能容易想复杂,反而第四题看上去比较直观,尤其是样例中给了做题思路,所以先20min过第四题。
然后重新看前三题,想到了第二题的解题思路,大概十几分钟实现出来。
回头再看第一题发现可以直接计数然后几分钟结束。
第三题个人做的时候难度最大,花了40+分钟,首先要发现其中那个值变化的规律,还要考虑两种不同的边界数据插入的情况
#笔试题解#
全部评论
最后一题你这个思路能过100%吗,我也是这个思路但是只过5%
点赞 回复 分享
发布于 08-25 21:03 广东

相关推荐

2 3 评论
分享
牛客网
牛客企业服务