您的位置:首页 > 职场人生

美国某前端职位面试题-- 寻找最大shape

2014-09-19 10:57 393 查看
/*     * 0 0 1 0 0       0 0 1 0 0       0 0 1 1 1       1 0 0 0 0     * */
连续的一片1,定义为一个shape, 在这里 有2个shape.

题目是寻找连续的1的SHAPE的最大size,在以上例子,最大的一块是5. 另外一块的size是1,所以 这里应该返回5.

解法1是:
用一个arraylist来记录所有的shape的size
另外用一个hashmap来记录所有的 1 对应的在arraylist的SHAPE的 index.
遍历,并且在左边和上边找有没有1,如果有,则通过hashmap找到对应的另一个arraylist的索引,然后把size 加1,更新max.

如果没有相邻节点,则新建一个shape, 并且将它的索引添加到arraylist中。

解法2: 直接用DFS, 将1的点的周边进行DFS,并且用一个二维ARRAY来存储访问过的标记,算法复杂度为O(n).
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: