奇安信笔试,前面是计算机基础知识,后面是两道算法题,难度不大。
第一题:核心代码模式
给一个有向图,04号点代表04号城市,问从0~4号城市的路径有几条?
输入是二维数组,nodes[i]代表第i个城市到其他城市有向边的集合。
如{{1, 2, 3}, {3}, {3}, {4}, {}},0和1,2,3连接,1和3连接……
输入:
{{1, 2, 3}, {3}, {3}, {4}, {}}
输出:
3
模板:
import java.util.*;
public class Solution {
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
* <p>
* 计算dag 路径上起始到目的节点的路径数目
*
* @param nodes int整型二维数组 第 i 个数组中的单元都表示有向图中 i 号节点所能到达的下一些结点(译者注:有向图是有方向的,即规定了 a→b 你就不能从 b→a ),若为空,就是没有下一个节点了。
* @return int整型
*/
public int DagPathNum(int[][] nodes) {
}
}
第二题:ACM模式
给一个数组,数组的索引代表x坐标,数值代表y坐标,如输入[4,1,2,7],第一个点坐标为(0, 4),第二个点坐标为(1,1),第三个点坐标为(2,2),第四个点坐标为(3,7)。
任意从中选择两个点,求能和x轴围成的矩形的最大面积,矩形面积求法:长是两个点横坐标的差,宽是两个点纵坐标的小者,如(0, 4)和(1,1),长1 - 0 = 0,宽 min(1,4)= 1。
输入:
[4,1,2,7]
输出:
12