2015-2016 company 亚马逊

来源:互联网 发布:未成年犯罪知乎 编辑:程序博客网 时间:2024/06/07 01:44

q1: 

输入是一个城市的地图的大小(m,n),和一个list,里面包含所有有locker的地理位置。输出一个m*n的二位数组,每个单元的值为到最近locker的距离。问时间复杂度

(这题要从每个locker同时开始bfs)

Q2: 

给一个图片,有着亮的点和黑的点,判断一共有多少个黑暗的块儿。时间复杂度。(这题我觉得相当于找出一个图中有多少个联通分量,我用bfs做的,用一个二维数组记录每个点是否被访问过)

Q3:


给定一个二维数组,每个1连接起来的地方就叫一个 island,问此图中有个多少个island。 
----------------->m 
|00001000000 
|10011110001 
|11110111011 
|00000000000 
n.....................

分析了一下应该是关于图的问题,找到有几个连通图,遍历所有节点进行 BFS:用队列来搞广度优先搜索。

算法: 用队列,每个节点得保存一个visited 标志。

1:从第一行开始,逐行从左向右扫描每个节点(按下面的算法2~4步 ),直到该行所有节点都处理了,再开始下一行。。


2:如果该节点是未访问的,数值为1,则把该节点入队列,并标记它为visted,把island数目+1.

3: 从队列中取出一个node,它左边相邻的,下边相邻的,和右边相邻的,且未访问的,且数字是1节点,把这些节点入队列并标记为visited,直到该队列为空。

4:然后处理该行下一个节点。


0 0
原创粉丝点击