题目分配
5 道编程题。
作答时间
120 分钟
做题感受
第一题简单模拟
给你一个矩阵,返回所有元素都相同的 2 * 2 的子矩阵的个数。
第二题排序
给你一个数组,每次操作只能将其中一个数字 +1 或者 -1,求 k 次操作后数组中最多能有几个零。
第三题多叉树
给你 n 个节点,每个节点只能是红色或者黑色,再给你 n-1 条节点的父子关系,求某种节点的个数,该节点的特征是子树中红黑节点都包含。
1
2
3
4
5
6
7样例:
3
黑红黑
1 2
2 3
输出:
2( 1 号节点和 2 号节点都是)这题比较坑的地方一是实际上是多叉树而不是二叉树,第二点这是从样例能分析出题目中的子树实际上是包含节点自身的。
第四题情景题
用
来表示 个 ,其中 ,再给你一个数组,该数组是用 块表示的(因为数据很长,需要用这种方式压缩,总长度数量级为 ),即 表示为 ,现在给你 表示数组的第 和 个数,求该区间的所有数的乘积的因子数量。 1
2
3
4
5
6样例:
原数组为[1,1,2,3,3,3]
输入为
(2,1),(1,2),(3,3)
l=1,r=3
答案为2,因为原数组中该区间为[1,1,2],乘积为2,而2的的因子只有1和2.思路是将
和 区间中的块找出来,并将所有的块都分解质因数(如 4 分成两个 2)并合并成 ,因为十以内的质数只有 。
那么答案就可以是:
因为对于个质因子 ,有 共计 种取法,所以所有质因子的组合有 种,而这也正是乘积的因子数。 第五题没看