8月19日华为笔试题(回忆,意思应该差不多,可能个人表述会有点不清。。。)
第一题
给你N行M列的人,他们是一个方阵。左上角是(0,0),右下角是(n-1, m-1),最外圈的人顺时针报数,当他们报的数个位是7并且十位是奇数,就选出来。外圈报完了内圈接着报,一直到所有人都报完,问最后选出来的是哪些。
要求是10<=n,m<=1000,如果输入不合法,那么就是返回空数组
输入
10 10
输出
[[7,9],[1,1],[8,2],[7,5],[4,4]]
第二题
给你N个节点,然后输入他们所在的高度,问最后的二叉树可以有几种,结果可能很大,对 取模
0<N<=1000,每个节点的所在高度小于N,大于等于0
输入
4 1 0 2 2
输出
2
hint
x / x / \ x x
或者
x \ x / \ x x
第三题
现在有一个已经落下来了一些的俄罗斯方块,我们用一个字符串表示,分别代表每个位置上已经落了多少块了。比如2202,就是下图
现在,有一个新的俄罗斯方块要掉下来,它的描述也是类似的,
例如121,就是下图
掉下来的块,一定保证是上底对齐的,并且不会出现下图这种情况
然后众所周知,落下来以后,如果一行没有间断的话,那么这一行就能消掉了,上面的那些就会往下落。
掉下来的块不能旋转,可以左右平移,但不能超出边界,让你最后没有被消除的行数尽可能小,问你这个值是多大。
输入
2202 2
输出
0
hint
如果你不把2放在原本的0处的话,那么现在的未消行数就是4
全部评论
(9) 回帖